Showing posts with label XML. Show all posts
Showing posts with label XML. Show all posts

Wednesday, February 27, 2008

How to Use SQLXML to Retrieve Data from SQL Server Database

Using SQL Server 2000 and above versions you can retrieve data from SQL Server in XML format directly from the database. Many XML related features were incorporated in the SQL Server database. This enables the development of XML enabled applications very easy and it makes exchange of data over internet easy. In this article we will discuss about how to use SQLXML to retrieve data directly from SQL server database in XML format.

There are some SQL commands and clauses that help you to retrieve data from the SQL Server in the XML format. Syntax for such is given below:

SELECT ... FOR XML mode [, XMLDATA] [, ELEMENTS] [, BINARY BASE64]
There are different modes and that take the values of
  • AUTO – In this mode every row of the result of the query forms an element in the returned XML document.
  • EXPLICIT – This mode defines how to map the columns of the results returned by the query to the XML elements and the attributes.
  • RAW - All the fields of the result are identified as attributes of an element.
  • NESTED – The result of this mode is the same as the AUTO mode but the formatting has to be done at the client side.

A simple example of using the above syntax is given below:

SELECT TOP 3 * FROM (SELECT FirstName+' '+LastName as Name FROM Employees) FOR XML AUTO

The query produces this result:

Employees Name="John Peter"
Employees Name="Andrew Dixon"
Employees Name="Tom Hanks"

There are optional parameters in the ‘FOR XML mode’ clause. The XMLDATA option adds an XSD schema which describes the XML format of the result returned. The ELEMENTS options make the fields of the tables in the database to be returned as child elements. If the ELEMENTS option is not there the fields of the tables are returned as attributes instead of child elements of the XML document. The ELEMENTS option is allowed only in the AUTO mode. The BINARY BASE64 option is used to retrieve any binary data. The returned binary data is returned in BASE64 encoded format. The binary data can be retrieved in the RAW or EXPLICIT mode.

An example of the RAW mode is given below:

SELECT EmpName, EmpCity from EMP for XML RAW

The above code returns a result like,

row EmpName=”John” EmpCity=”New York”

In the above result you can note that the fields of the resultset are returned as attributes of the element.

.Net provides with managed classes for interacting with SQL Server. The managed classes of SQLXML provided by .Net are:

  • SqlXmlCommand – This is used to perform queries that are stored in XML documents which are also called XML templates. This class also provides support for client side XML processing.
  • SqlXmlParameter – this is used to provide parameterized values and is used along with SqlXmlCommand object.
  • SqlXmlAdapter – this is the adapter class for SQLXML provider. This is used to fill the dataset.
  • SqlXmlException – this is used to trap the error information from the SQL Server.

A sample code using the managed classes is given below. For detailed information on the usage of the above managed classes you can refer to the MSDN documentation.

static string cstr = "Provider=SQLOLEDB;Server=(local);database=EmpPersonal;";

public static void testingSqlXml () {

Stream oStr = Console.OpenStandardOutput();

SqlXmlCommand sqlcmd = new SqlXmlCommand(cstr);

sqlcmd.Root = "Employees";

sqlcmd.CommandType = SqlXmlCommandType.Sql;

sqlcmd.CommandText = "SELECT EmpName, EmpCity FROM Employees FOR XML AUTO";

strm = sqlcmd.ExecuteToStream(oStr);

oStr.Close();

}

Thus we have seen that SQLXML can be used to retrieve data directly from the SQL Server in XML format. It is easy to handle and transmit data through the internet if it is in the XML format and this can be easily achieved using the SQLXML.

Want to stay current with the latest technology developments realted to XML. Visit Free XML Tutorial to get your FREE subscription now!

Thursday, February 14, 2008

What is SAX?

SAX is a serial access parser API for XML. Sax provides a mechanism for reading data from an XML document. It is a popular alternative to the Document Object Model (DOM). The name is acronymically derived from "Simple API for XML".

A parser which implements SAX (ie, a SAX Parser) handles XML information as a single stream of data. This data stream is unidirectional, such that previously accessed data cannot be re-read without reparsing.

Most users of XML believe that the SAX paradigm results in systematically faster XML processing than DOM. This is attributed to the fact that a SAX stream has a minuscule memory footprint compared to that of a fully constructed DOM tree.

The SAX parser is implemented as an event-driven model in which the programmer provides callback methods which are invoked by the parser as part of its traversal of the XML document.

SAX was developed collaboratively on the xml-dev mailing list, with no formal committee structure, but was quickly implemented by major companies working with XML. The original lead developer and maintainer was David Megginson.

About this Terminology
This terminology is from The Wikipedia which is published under the GNU Free Documentation License.

Wednesday, February 13, 2008

What is SVG?

Scalable Vector Graphics (SVG) is an XML markup language for describing two-dimensional vector graphics, both static and animated (either declarative or scripted). It is an open standard created by the World Wide Web Consortium, which is also responsible for standards like HTML and XHTML.

Overview

SVG allows three types of graphic objects:

  • Vector graphic shapes (e.g. paths consisting of straight lines and curves, and areas bounded by them)
  • Raster graphics images / digital images
  • Text
  • Graphical objects can be grouped, styled, transformed and composited into previously rendered objects. Text can be in any XML namespace suitable to the application, which enhances searchability and accessibility of the SVG graphics. The feature set includes nested transformations, clipping paths, alpha masks, filter effects, template objects and extensibility.

SVG drawings can be dynamic and interactive. The Document Object Model (DOM) for SVG, which includes the full XML DOM, allows straightforward and efficient vector graphics animation via ECMAScript or SMIL. A rich set of event handlers such as onmouseover and onclick can be assigned to any SVG graphical object. Because of its compatibility and leveraging of other Web standards, features like scripting can be done on SVG elements and other XML elements from different namespaces simultaneously within the same web page. An extreme example of this is a complete tetris game implemented as an SVG object, found here! (The link requires an SVG enabled browser.)

If storage space is an issue, SVG images can be saved with gzip compression, in which case they may be called "SVGZ files". Because XML contains verbose text, it tends to compress very well and these files can be much smaller. Often however the original vector-file (SVG) is already smaller than the rasterised version.

Impact on the Web
The widespread adoption of SVG clients, particularly those natively embedded in web browsers (as it is in Firefox and Opera), may bring a significant new look-and-feel to the World Wide Web. A current trend is to build dynamic web sites that behave somewhat like desktop applications, utilizing the Ajax technique. SVG enhances the capabilities of Ajax, by providing a rich, graphical set of page elements, well beyond those specified by HTML/CSS. The SVG Terminal module for Firefox is an early example of this.

Development history
SVG was developed by the W3C SVG Working Group starting in 1998, after Macromedia and Microsoft introduced Vector Markup Language (VML) whereas Adobe Systems and Sun Microsystems submitted a competing format known as PGML. The working group was chaired by Chris Lilley of the W3C.

  • SVG 1.0 became a W3C Recommendation on 2001-09-04.
  • SVG 1.1 became a W3C Recommendation on 2003-01-14.
  • SVG Tiny and SVG Basic (the Mobile SVG Profiles) became W3C Recommendations on 2003-01-14. These are described as profiles of SVG 1.1.
  • SVG Tiny 1.2 and SVG Full 1.2 are both currently W3C Working Drafts. SVG Tiny 1.2 was initially released as a profile, and later refactored to be a complete specification, including all needed parts of SVG 1.1 and SVG 1.2. As of 2005-12-07, SVG Tiny 1.2 is now in Last Call Working Draft. A similarly refactored draft for SVG 1.2 Full has not yet been released.

Mobile profiles
Because of industry demand, two mobile profiles were introduced with SVG 1.1: SVG Tiny (SVGT) and SVG Basic (SVGB). These are subsets of the full SVG standard, mainly intended for user agents with limited capabilities. In particular, SVG Tiny was defined for highly restricted mobile devices such as cellphones, and SVG Basic was defined for higher level mobile devices, such as PDAs.

Neither mobile profile includes support for the full DOM, while only SVG Basic has optional support for scripting, but because they are fully compatible subsets of the full standard most SVG graphics can still be rendered by devices which only support the mobile profiles.

Support for SVG in browsers and other applications
The use of SVG on the web is in its infancy. There is a great deal of inertia from the long-time use of pure raster formats and other formats like Macromedia Flash or Java applets, but also browser support is patchy, with most browsers requiring a plugin. Web sites which serve SVG images typically also provide the images in a raster format, either automatically by HTTP content negotiation or allowing the user to directly choose the file. Alternative images are usually automatically rasterised using a library such as ImageMagick, which provides a quick but incomplete implementation of SVG, or Batik, which implements all SVG except declarative animation but requires the overhead of a Java Runtime Environment.

Some wikis have experimented with SVG support; it has been speculated that since SVG is a text-based format, a wiki might allow edits to SVG images in a fashion similar to editing a standard article. However, the benefits of editing images in this way are disputed. It is generally considered that even trivial editing is better achieved using a separate graphics package because it is difficult to visualise exactly how changes to the XML will appear on the final image. Current wikis mostly do not support either the display or editing of SVG images, partly because of the lack of full browser support, but also because rasterization using Batik is CPU-intensive and requires Sun's Java Runtime Environment, which is not free (as in freedom). In the spirit of being open, many wikis refuse to use non-free software; for example Jimbo Wales speaks about this in his weblog. SVG support would be valuable to a wiki, especially for articles that require diagrams, so the situation may change in the future, when ImageMagick is expanded to cover more of the SVG standard, and work on allowing Batik to run on a completely free Java implementation is complete. Wikipedia currently supports the SVG format.

Plugin support
In browsers such as Internet Explorer and Safari, a plugin is needed to view SVG content. The most widely available SVG plugin on the desktop is from Adobe Systems (the Adobe SVG Viewer) which supports most of SVG 1.0/1.1. The current version of Safari ships with the plugin, while Internet Explorer users must separately download it. A legacy plugin was once offered from Corel (the Corel SVG Viewer).

Native support
There are several advantages to native support, among which are no need for the installation of a plugin, the ability to freely mix SVG with other formats in a single document, and rendering scripting between different document formats considerably more reliable. At this time all major browsers have committed to some level of SVG support except for Internet Explorer. See Comparison of layout engines for further details.

  • The Opera web browser (since 8.0) has support for the SVG 1.1 Tiny specification. Opera 9 will include SVG 1.1 Basic support.
  • Browsers based on the Gecko layout engine version 1.8 (such as Firefox 1.5, Camino 1.0 and SeaMonkey internet suite 1.0), all have incomplete support for the SVG 1.1 Full specification. The Mozilla site has an overview of the modules which are supported in Firefox 1.5 and an overview of the modules which are in progress in the development version of Firefox.
  • Apple's Safari browser, has also recently begun to port KSVG2 into WebCore, initiating work on incorporating native support of SVG into Safari.
  • Nightly builds of Safari now include SVG support.
  • KDE's Konqueror has a fairly complete SVG plugin called KSVG. KSVG2 is slated to be rolled into KDE 4 core which could make it native rendering for Konqueror some time in the future. Elsewhere in KDE the format is finding greater use, and from version 3.4 onwards SVG wallpapers are supported
  • The Amaya web browser has partial SVG support
  • The Batik SVG Toolkit can be used by Java programs to render, generate, and manipulate SVG graphics
  • SVG Salamander is an open alternative to Batik for Java
  • The Gnome project has had integrated SVG support throughout the desktop since 2000.

Mobile support
On mobile, the most popular implementations for mobile phones are by Ikivo and Bitflash, while for PDAs, Bitflash and Intesis have implementations. Flash Lite by Macromedia optionally supports SVG Tiny since version 1.1. At the SVGOpen 2005 conference, Sun demonstrated a mobile implementation of SVG Tiny 1.1 for the CDLC platform. The TinyLine SVG viewer, written in Java, is also targeted at mobile devices.

About this Terminology
This terminology is from The Wikipedia which is published under the GNU Free Documentation License.

Monday, February 4, 2008

What is VoiceXML?

VoiceXML (VXML) is the W3C's standard XML format for specifying interactive voice dialogues between a human and a computer. It is fully analogous to HTML, and brings the same advantages of web application development and deployment to voice applications that HTML brings to visual applications. Just as HTML documents are interpreted by a visual web browser, VoiceXML documents are interpreted by a voice browser. A common architecture is to deploy banks of voice browsers attached to the public switched telephone network (PSTN) so that users can simply pick up a phone to interact with voice applications.

There are already thousands of commercial VoiceXML applications deployed, processing many millions of calls per day. These applications perform a huge variety of services, including order inquiry, package tracking, driving directions, emergency notification, wake-up, flight tracking, voice access to email, customer relationship management, prescription refilling, audio newsmagazines, voice dialing, and real-estate information. They serve all industries, and range in size all the way up to massive national directory assistance applications.

VoiceXML has tags that instruct the voice browser to provide speech synthesis, automatic speech recognition, dialog management, and soundfile playback. The following is an example of a VoiceXML document:


<?xml version="1.0"?>
<vxml version="2.0" xmlns="http://www.w3.org/2001/vxml">
<form>
<block>
<prompt>
Hello world!
</prompt>
</block>
</form>
</vxml>

When interpreted by a VoiceXML interpreter this will output "Hello world" with synthesized speech.

Typically, HTTP is used as the transport protocol for fetching VoiceXML pages. While simpler applications may use static VoiceXML pages, nearly all rely on dynamic VoiceXML page generation using an application server like Tomcat, Weblogic, .NET server or WebSphere. In a well-architected web application, the voice interface and the visual interface share the same back-end business logic.

Historically, VoiceXML platform vendors have implemented the standard in different ways, and added proprietary features. But the W3C's new VoiceXML 2.0 standard clarifies most areas of difference, and vendors are going through a rigorous conformance testing process set up by the VoiceXML Forum, the industry group promoting the use of the standard.

Two closely related W3C standards used with VoiceXML are the Speech Synthesis Markup Language (SSML) and the Speech Recognition Grammar Specification (SRGS). SSML is used to decorate textual prompts with information on how best to render them in synthetic speech, for example which speech synthesizer voice to use, and when to speak louder. SRGS is used to tell the speech recognizer what sentence patterns it should expect to hear.

The Call Control eXtensible Markup Language (CCXML) is a complementary W3C standard. A CCXML interpreter is used on some VoiceXML platforms to handle the initial call setup between the caller and the voice browser, and to provide telephony services like call transfer and disconnect for the voice browser. CCXML is also very useful in non-VoiceXML contexts.

About this Terminology
This terminology is from The Wikipedia which is published under the GNU Free Documentation License.

What is XML Namespace?

An XML namespace is a W3C standard for providing uniquely named elements and attributes in an XML instance. An XML instance may contain element or attribute names from more than one XML vocabulary. If each vocabulary is given a namespace then the ambiguity between identically named elements or attributes can be resolved.

All element names within a namespace must be unique.

A simple example would be to consider an XML instance that contained references to a customer and an ordered product. Both the customer element and the product element could have a child element "ID_number". References to the element ID_number would therefore be ambiguous unless the two identically named but semantically different elements were brought under namespaces that would differentiate them.

A namespace is declared using the reserved XML attribute xmlns, the value of which must be a URI (Uniform Resource Identifier) reference e.g. xmlns="http://www.w3.org/1999/xhtml". Note, however, that the URI is not actually read, it is simply treated by an XML parser as a string. For example, http://www.w3.org/1999/xhtml itself does not contain any code, it simply describes the xhtml namespace to human readers. Using a URI (such as "http://www.w3.org/1999/xhtml") to identify a namespace, rather than a simple string (such as "xhtml"), reduces the possibility of different namespaces using duplicate identifiers.

The declaration can also include a short prefix with which elements and attributes can be identified e.g. xmlns:xhtml=http://www.w3.org/1999/xhtml.

An XML namespace does not require that its vocabulary be defined, though it is fairly common practice to place either a DTD or an XML Schema defining the precise data structure at the location of the namespace's URI.

About this Terminology
This terminology is from The Wikipedia which is published under the GNU Free Documentation License.

What is XML?

The Extensible Markup Language (XML) is a W3C-recommended general-purpose markup language for creating special-purpose markup languages, capable of describing many different kinds of data. It is a simplified subset of SGML. Its primary purpose is to facilitate the sharing of data across different systems, particularly systems connected via the Internet. Languages based on XML (for example, Geography Markup Language (GML), RDF/XML, RSS, MathML, Physical Markup Language (PML), XHTML, SVG, MusicXML and cXML) are defined in a formal way, allowing programs to modify and validate documents in these languages without prior knowledge of their form.

History
By the mid-1990s some practitioners of SGML had gained experience with the then-new World Wide Web, and believed that SGML offered solutions to some of the problems the Web was likely to face as it grew. Jon Bosak argued that the W3C should sponsor an "SGML on the Web" activity. After some resistance he was authorized to launch that activity in mid-1996, albeit with little involvement by or support from the W3C leadership. Bosak was well-connected in the small community of people who had experience both in SGML and the Web. He received support in his efforts from Microsoft.

XML was designed by an eleven-member working group, supported by an (approximately) 150-member Interest Group. Technical debate took place on the Interest Group mailing list and issues were resolved by consensus or, when that failed, majority vote of the Working Group. James Clark served as Technical Lead of the Working Group, notably contributing the empty-element "" syntax and the name "XML". Other names that had been put forward for consideration included "MAGMA" (Minimal Architecture for Generalized Markup Applications), "SLIM" (Structured Language for Internet Markup) and "MGML" (Minimal Generalized Markup Language). The co-editors of the specification were originally Tim Bray and Michael Sperberg-McQueen. Halfway through the project Bray accepted a consulting engagement with Netscape, provoking vociferous protests from Microsoft. Bray was temporarily asked to resign the editorship. This led to intense dispute in the Working Group, eventually solved by the appointment of Microsoft's Jean Paoli as a third co-editor.

The XML Working Group never met face-to-face; the design was accomplished using a combination of email and weekly teleconferences. The major design decisions were reached in twenty weeks of intense work between July and November of 1996. Further design work continued through 1997, and XML 1.0 became a W3C Recommendation on February 10, 1998 .

XML 1.0 achieved the Working Group's goals of Internet usability, general-purpose usability, SGML compatibility, facilitation of easy development of processing software, minimization of optional features, legibility, formality, conciseness, and ease of authoring.

Clarifications and minor changes were accumulated in published errata and then incorporated into a Second Edition of the XML 1.0 Recommendation on October 6, 2000. Subsequent errata were incorporated into a Third Edition on February 4, 2004.

Also published on the same day as XML 1.0 Third Edition was XML 1.1, a variant of XML that encourages more consistency in how characters are represented and relaxes restrictions on names, allowable characters, and end-of-line representations.

Both XML 1.0 Third Edition and XML 1.1 are considered current versions of XML.

Features of XML
XML provides a text-based means to describe and apply a tree-based structure to information. At its base level, all information manifests as text, interspersed with markup that indicates the information's separation into a hierarchy of character data, container-like elements, and attributes of those elements. In this respect, it is similar to the LISP programming language's S-expressions, which describe tree structures wherein each node may have its own property list.

The fundamental unit in XML is the character, as defined by the Universal Character Set. Characters are combined in certain allowable combinations to form an XML document. The document consists of one or more entities, each of which is typically some portion of the document's characters, encoded as a series of bits and stored in a text file.

The ubiquity of text file authoring software (word processors) facilitates rapid XML document authoring and maintenance, whereas prior to the advent of XML, there were very few data description languages that were general-purpose, Internet protocol-friendly, and very easy to learn and author. In fact, most data interchange formats were proprietary, special-purpose, "binary" formats (based foremost on bit sequences rather than characters) that could not be easily shared by different software applications or across different computing platforms, much less authored and maintained in common text editors.

By leaving the names, allowable hierarchy, and meanings of the elements and attributes open and definable by a customizable schema, XML provides a syntactic foundation for the creation of custom, XML-based markup languages. The general syntax of such languages is rigid — documents must adhere to the general rules of XML, assuring that all XML-aware software can at least read (parse) and understand the relative arrangement of information within them. The schema merely supplements the syntax rules with a set of constraints. Schemas typically restrict element and attribute names and their allowable containment hierarchies, such as only allowing an element named 'birthday' to contain 1 element named 'month' and 1 element named 'day', each of which has to contain only character data. The constraints in a schema may also include data type assignments that affect how information is processed; for example, the 'month' element's character data may be defined as being a month according to a particular schema language's conventions, perhaps meaning that it must not only be formatted a certain way, but also must not be processed as if it were some other type of data.

In this way, XML contrasts with HTML, which has an inflexible, single-purpose vocabulary of elements and attributes that, in general, cannot be repurposed. With XML, it is much easier to write software that accesses the document's information, since the data structures are expressed in a formal, relatively simple way.

XML makes no prohibitions on how it is used. Although XML is fundamentally text-based, software quickly emerged to abstract it into other, richer formats, largely through the use of datatype-oriented schemas and object-oriented programming paradigms (in which the document is manipulated as an object). Such software might only treat XML as serialized text when it needs to transmit data over a network, and some software doesn't even do that much. Such uses have led to "binary XML", the relaxed restrictions of XML 1.1, and other proposals that run counter to XML's original spirit and thus garner an amount of criticism.

Strengths and weaknesses
Some features of XML that make it well-suited for data transfer are:

  • its simultaneously human- and machine-readable format;
  • it has support for Unicode, allowing almost any information in any human language to be communicated;
  • the ability to represent the most general computer science data structures: records, lists and trees;
  • the self-documenting format that describes structure and field names as well as specific values;
  • the strict syntax and parsing requirements that allow the necessary parsing algorithms to remain simple, efficient, and consistent.

XML is also heavily used as a format for document storage and processing, both online and offline, and offers several benefits:

  • its robust, logically-verifiable format is based on international standards;
  • the hierarchical structure is suitable for most (but not all) types of documents;
  • it manifests as plain text files, unencumbered by licenses or restrictions;
  • it is platform-independent, thus relatively immune to changes in technology;
  • it and its predecessor, SGML, have been in use since 1986, so there is extensive experience and software available.

For certain applications, XML also has the following weaknesses:

  • Its syntax is fairly verbose and partially redundant. This can hurt human readability and application efficiency, and yields higher storage costs. It can also make XML difficult to apply in cases where bandwidth is limited, though compression can reduce the problem in some cases. This is particularly true for multimedia applications running on cell phones and PDAs which want to use XML to describe images and video.
  • Parsers should be designed to recurse arbitrarily nested data structures and must perform additional checks to detect improperly formatted or differently ordered syntax or data (this is because the markup is descriptive and partially redundant, as noted above). This causes a significant overhead for most basic uses of XML, particularly where resources may be scarce - for example in embedded systems. Furthermore, additional security considerations arise when XML input is fed from untrustworthy sources, and resource exhaustion or stack overflows are possible.
  • Some consider the syntax to contain a number of obscure, unnecessary features born of its legacy of SGML compatibility. However, an effort to settle on a subset called "Minimal XML" led to the discovery that there was no consensus on which features were in fact obscure or unnecessary.
  • The basic parsing requirements do not support a very wide array of data types, so interpretation sometimes involves additional work in order to process the desired data from a document. For example, there is no provision in XML for mandating that "3.14159" is a floating-point number rather than a seven-character string. XML schema languages add this functionality.
  • Modelling overlapping (non-hierarchical) data structures requires extra effort.
    Mapping XML to the relational or object oriented paradigms is often cumbersome.
    Some have argued that XML can be used for data storage only if the file is of low volume, but this is only true given particular assumptions about architecture, data, implementation, and other issues.

About this Terminology
This terminology is from The Wikipedia which is published under the GNU Free Documentation License.

Friday, November 2, 2007

What is XQuery?

XQuery is a query language (with some programming language features) that is designed to query collections of XML data. It is semantically similar to SQL.

XQuery 1.0 is being developed by the XML Query working group of the W3C. The work is closely coordinated with the development of XSLT 2.0 by the XSL Working Group; the two groups share responsibility for XPath 2.0, which is a subset of XQuery 1.0. XQuery 1.0 became a W3C Candidate Recommendation on November 3, 2005.

Features

XQuery provides the means to extract and manipulate data from XML documents or any data source that can be viewed as XML, such as relational databases or office documents.

XQuery uses XPath expression syntax to address specific parts of an XML document. It supplements this with a SQL-like FLWOR expression for performing joins. The FLWOR expression is named after its five clauses: FOR, LET, WHERE, ORDER BY, RETURN.

The language also provides syntax allowing new XML documents to be constructed. Where the element and attribute names are known in advance, an XML-like syntax can be used; in other cases, expressions referred to as dynamic node constructors are available. All these constructs are defined as expressions within the language, and can be arbitrarily nested.

The language is based on a tree-structured model of the information content of an XML document, containing seven kinds of node: document nodes, elements, attributes, text nodes, comments, processing instructions, and namespaces.

The type system of the language models all values as sequences (a singleton value is considered to be a sequence of length one). The items in a sequence can either be nodes or atomic values. Atomic values may be integers, strings, booleans, and so on: the full list of types is based on the primitive types defined in XML Schema.

XQuery 1.0 does not include features for updating XML documents or databases. It also lacks full text search capability. These features are both under active development for a subsequent version of the language.

This tutorial is from The Wikipedia which is published under the GNU Free Documentation License.

Sunday, September 23, 2007

Free eBooks from Apress

Apress has made a number of their books available as free ebooks. Here is a current list of the free ebooks available:

  • Practical Common Lisp
  • Enterprise Java Development on a Budget: Leveraging Java Open Source Technologies
  • Beginning J2EE 1.4: From Novice to Professional
  • Google, Amazon, and Beyond: Creating and Consuming Web Services
  • Pro JSP, Third Edition
  • Writing Perl Modules for CPAN
  • XML Programming: Web Applications and Web Services With JSP and ASP
  • COM and .NET Interoperability
  • Programming VB .NET: A Guide For Experienced Programmers
  • A Programmer's Introduction to PHP 4.0

These ebooks are available to download for free in PDF format from the Apress web site.

Tuesday, February 6, 2007

What is a WSDL?

The Web Services Description Language (WSDL, pronounced 'wiz-dull' or spelled out, 'W-S-D-L') is an XML-based language that provides a model for describing Web services. Version 1.1 has not been endorsed by the World Wide Web Consortium (W3C). Version 2.0, for which several drafts have been released, is expected to become a W3C recommendation.

WSDL is an XML-based service description on how to communicate using web services. The WSDL defines services as collections of network endpoints, or ports. WSDL specification provides an XML format for documents for this purpose.

The abstract definition of ports and messages is separated from their concrete use or instance, allowing the reuse of these definitions. A port is defined by associating a network address with a reusable binding, and a collection of ports define a service. Messages are abstract descriptions of the data being exchanged, and port types are abstract collections of supported operations. The concrete protocol and data format specifications for a particular port type constitutes a reusable binding, where the messages and operations are then bound to a concrete network protocol and message format. In this way, WSDL describes the public interface to the web service.

WSDL is often used in combination with SOAP and XML Schema to provide web services over the Internet. A client program connecting to a web service can read the WSDL to determine what functions are available on the server. Any special datatypes used are embedded in the WSDL file in the form of XML Schema. The client can then use SOAP to actually call one of the functions listed in the WSDL.

This definition is from The Wikipedia which is published under the GNU Free Documentation License.