1 / 19

XPath

Navigating XML. XPath. Overview. Xpath is a non-xml syntax to be used with XSLT and Xpointer. Its purpose according to the W3.org is

eric-grimes
Download Presentation

XPath

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Navigating XML XPath

  2. Overview • Xpath is a non-xml syntax to be used with XSLT and Xpointer. Its purpose according to the W3.org is • to address parts of an XML document. In support of this primary purpose, it also provides basic facilities for manipulation of strings, numbers and booleans. XPath uses a compact, non-XML syntax to facilitate use of XPath within URIs and XML attribute values. XPath operates on the abstract, logical structure of an XML document, rather than its surface syntax. XPath gets its name from its use of a path notation as in URLs for navigating through the hierarchical structure of an XML document.

  3. The Xpath Expression • An Xpath expression consists of a location path and one or more location steps. • Each location step consists of an axis, a node test and a predicate axis::nodetest[predicate] • One or more of these elements may be absent but if both axis and nodetest are present they must be separated by :: and if the predicate is present it must be in [ ]

  4. First a Few Terms • Node • Node-set • Context Node • Location Path

  5. Node • There are seven types of nodes • The document as a whole • Element nodes (one for each element in a document) • Attribute nodes • Comment nodes • Processing instructions • Namespace nodes • Text nodes

  6. Node-set • A node-set is a group of nodes returned by a single xpath expression • (This has important implications for Xpointers where sets of information could be returned from a remote document and embedded in a new or current document)

  7. Context-node • The context node identifies where in the document to start applying a given set of instructions

  8. Location Path • The location path is simply the path or instructions for getting to a particular point in a document

  9. Axis • The axis determines which direction you want to move in the document • Directions are like “next node”, preceding node”, “Parent node”, “Child node”

  10. Some Axis Directions

  11. Axis Short Cut Syntax

  12. Nodetest • There are three kinds of node test • Name test—tests the names along the specified path • Node types—tests for the type of node along the specified path (comment, node, processing-instruction or text) • Literal text—locates the literal text preceding::processing-instruction(“xml:stylesheet”)

  13. Predicate • The predicate part is optional, but can give you more precise control //customer[@name='John']/@name • This has a predicate of [@name=‘John’] which selects the order that has the name attribute value John

  14. Xpath Function • Xpath also contains many built in functions. Some are:

  15. An Example: The XML File <?xml version=“1.0”?><orders> <customer name=“John” > <order quantity=“5”> dinner specials </order> <order quantity=“2”> red wine </order> </customer></orders> *click here to see the whole file

  16. Selecting one Customer <h3><xsl:value-of select="//customer[@name='John']/@name"/></h3> <p> <xsl:for-each select="//customer[@name='John']/order"> <xsl:value-of select="@quantity" /> <xsl:value-of select="." /> </xsl:for-each> </p>

  17. Totaling the orders <xsl:value-of select="sum(//order/@quantity)" />

  18. Returning the Node Names <xsl:for-each select="//customer"> <xsl:value-of select="name()"/> </xsl:for-each>

  19. Count of Nodes <xsl:value-of select="count(customer)" />

More Related