Using XML Queries and Transformations

IE5 Conformance

IE5 implements a subset of XPath. If you are developing for the MSXML objects in the initial IE5 release, you have to know what features are implemented in XPath and which are not. Microsoft has committed to implementing the full standard in all later versions. It is unclear what backward compatibility will exist with syntax elements that are not part of the W3C recommendation. Here we will show the differences between the IE5 implementation and the W3C recommendation 1.0.

Axes

IE5 knows only the abbreviated syntax for axis and node test. You cannot use the syntax with a double colon. This limits the number of axes, because not all XPath axes have an abbreviated form (for example namespace, ancestor, following, preceding).

Functions

Not all of the built-in functions of XPath are supported in IE5. The most notable difference is the last() function which is called end() in IE5. Also, many functions are not supported at all. Here is a full list of the supported functions in IE5:

  • attribute() returns all attribute nodes of the context node.
  • cdata() returns all CDATA nodes that are children of the context node.
  • comment() returns all comment nodes that are children of the context node.
  • date() casts a value to date format.
  • element() returns all elements that are children of the context node.
  • end() is synonymous to last() in the XPath recommendation.
  • index() returns the index number of the node within its parent.
  • node() returns all nodes (except attributes and the root node) that are children of the context node.
  • nodeName() returns the tag name (includes namespace prefix).
  • nodeType() returns a number indicating the node type.
  • number() casts values to number format.
  • pi() returns all processing instruction nodes that are children of the context node.
  • text() returns all nodes that represent a text value, that are children of the context node. This includes both text nodes and CDATA nodes.
  • textnode() returns all text nodes that are children of the context node.
  • value() returns the value of an element or attribute.
  • Examples

    In the source code download, you will find a small Visual Basic application, called XPathTester.vbp, which allows you to both practice the writing of XPath queries and test their performance. If you start the application, you will see this form:

    The Query tester frame can be used once an XML document is loaded. After loading such a document (take a big one like Macbeth.xml), you can see the structure of the document in the tree view control to the left. If you select a node and type an XPath expression in the Query text box, you can execute this query, using the selected node as your context node. All matching nodes are listed in the list box. If you click a list item, the underlying XML source is shown in the text box on the right. Note that the number of seconds needed for performing the query is shown directly under the list box. Use this application to practice writing queries. Notice how more specific queries have a better performance than very general ones. Also, queries that specify the structural relations of elements are much faster than queries specifying the text content of elements and attributes.

    You might also like...

    Comments

    Contribute

    Why not write for us? Or you could submit an event or a user group in your area. Alternatively just tell us what you think!

    Our tools

    We've got automatic conversion tools to convert C# to VB.NET, VB.NET to C#. Also you can compress javascript and compress css and generate sql connection strings.

    “Linux is only free if your time has no value” - Jamie Zawinski