Transforming XML Part I Document Navigation with XPath John Arnett, MSc Standards Modeller Information and Statistics Division NHSScotland Tel: (x2073)
Contents Document Processing Nodes and Trees XPath: Locating Nodes Summary Find Out More
Document Processing The XSL Family –XPath (XML Path Language) –XSLT (Extensible Stylesheet Language Transformations) –XSL aka XSL-FO (Extensible Stylesheet Language Formatting Objects)
Document Processing XPath –Used to locate specific parts of an XML source document efficiently and effectively –XPath v1.0 W3C Recommendation
Document Processing XSLT –Used to transform XML documents to another XML or non-XML form – esp. HTML –XSLT v1.0 W3C Recommendation v2.0 W3C Working Draft –Uses XPath for locating document content
Document Processing XSL(-FO) –Used to format XML documents into fixed sized folios for publication –XSL v1.0 W3C Recommendation –Uses XSLT for document transformation
Document Processing Transformation and formatting –XPath used to locate nodes for input –XSLT used to transform input and generate result tree –XSL-FO used to format output document
Document Processing Adapted from XSLT Basics slide presentation by Paul Spencer, alphaXML Source Tree Style sheet FormatTransform Result Tree Formatted Output Stylesheet Processor
Trees and Nodes XML document is viewed as a source tree containing different node types –root –element –text –attribute –namespace –processing instruction –comment
Trees and Nodes XML Appointment example John Smith Alison Young 14:30:00
Trees and Nodes XPath view of Appointment source tree
XPath: Locating Nodes XPath expressions (location paths) –Used to navigate source tree and locate nodes for input –Comprised of one or more location steps axis + node test + (optional) predicate –May contain functions, e.g. position(), count(node-set), last()
XPath: Locating Nodes Axes –Specify node locations relative to the current (context) node = self –May traverse tree forwards or backwards
XPath: Locating Nodes Axes for forward traversal –child –attribute –descendant-or-self –descendant –following –following-sibling –namespace
XPath: Locating Nodes Axes for reverse traversal –parent –ancestor –ancestor-or-self –preceding –preceding-sibling
XPath: Locating Nodes Node Tests –Refine node set selection * = select all nodes of same type node() = select all nodes of any type Select all nodes of type text(), comment() or processing- instruction() Select all nodes with specified name
XPath: Locating Nodes Select Clinician element node child::Appointment/child::Clinician or Appointment/Clinician
XPath: Locating Nodes Select upi attribute node child::Patient/attribute::upi or
XPath: Locating Nodes Select all descendant text nodes /descendant-or-self::node()/child::text() or //text()
XPath: Locating Nodes Select parent of StartTime element parent::node() or..
XPath: Locating Nodes Using wildcards child::* or *
XPath: Locating Nodes Abbreviating location steps –child:: and text() can usually be omitted child::Appointment/child::Clinician/child ::text() = Appointment/Clinician –attribute:: –self()::node =. –parent::node() =..
XPath: Locating Nodes Abbreviating Location Paths /descendant-or-self::node()/ = // /descendant-or-self::node()/child::text() = //text()
In Summary… XML document processing: –XPath - node location –XSLT - transformation –XSL-(FO) - document formatting XPath used to navigate source tree Transformation performed by applying style sheet to source document
Find Out More The Extensible Stylesheet Language Family (XSL) – W3C XML Path Language v1.0 Specification – TopXML XSLT & XPath Tutorial – efault.aspwww.vbxml.com/xsl/tutorials/intro/d efault.asp