More XML XML schema, XPATH, XSLT CS 431 – 20040225 Carl Lagoze – Cornell University
Distributed, interlinked A little context RDF Semantic Relationships DAML+OIL Concept Building Semantic Web Traditional Library Central control Uniform expertise Traditional Web Distributed, interlinked Viewable Documents Xpath Data Decomposition XSLT Transformation Schema Type Definition Namespaces Concept Integration DTD Tag Sets XML Markup Syntax URIs Name Convention HTTP Access Method
Language for addressing parts of an XML document XPath Language for addressing parts of an XML document XSLT Xpointer Tree model similar to DOM W3C Recommendation (1999) http://www.w3.org/TR/xpath
Location Steps – selection from context node Xpath Concepts Context Node current node in XML document that is basis of path evaluation Default to root Location Steps – selection from context node Axis – sub-tree(s) selection from context node Node Test – select specific elements or node type(s) Predicates – predicate for filtering after axis and node tests
Axis child: all children of context descendent: all children, grandchildren, … parent: ancestor
Node Test Element name: e.g. “Book” Wildcard: * Type(): where type is “node”, “text”, etc.
Boolean and comparative operators Types Predicate Boolean and comparative operators Types Numbers Strings node-sets Functions Examples boolean starts-with(string, string) number count(node-set)
Combining all into a location set specification Syntax: axis::node-test[predicate] Examples: child::Book[position() <= 3] – first three <Book> child elements of context child::Book/attribute::color – “color” attributes of <Book> child elements of context
“.” (self), “..” (parent), “//” (descendent-or-self) Abbreviations Child axis is default child::Book Book Attribute axis @ Book[position() = 1]/@color “.” (self), “..” (parent), “//” (descendent-or-self) position() = n n Example Book[2]/@color
XML Transformations (XSLT) Origins: separate rendering from data Roots in CSS W3C Recommendation http://www.w3.org/TR/xslt Generalized notion of transformation for: Multiple renderings Structural transformation between different languages Dynamic documents XSLT – rule-based (declarative) language for transformations
XSLT Capabilities Generate constant text Filter out content Change tree ordering Duplicate nodes Sort nodes Any computational task (XSLT is “turing complete”)
Output doc (xml, html, etc) XSLT Processing Model parse XSLT serialize Input XML doc Parsed tree Xformed tree Output doc (xml, html, etc)
XSLT “engine” XSLT Engine (SAXON) XML input Output Document (xml, html, …) XSLT “program”
Stylesheet Document or Program XML document rooted in <stylesheet> element Body is set of templates Xpath expression specifies elements in source tree Body of template specifies contribution of source elements to result tree Not sequential execution
Template Form Elements from xsl namespace are transform instructions Match attribute value is xpath expression Non-xsl namespace elements are literals.
A simple example XSLT file XML base file http://www.cs.cornell.edu/Courses/cs502/2002SP/Demos/xslt/simple.xsl XML base file http://www.cs.cornell.edu/Courses/cs502/2002SP/Demos/xslt/simple.xml
XSLT Recursive Programming Style Document driven, template matching Conflict resolution rules Mode setting <xsl:apply-templates mode=“this”> <xsl:template match=“foo” mode=“this”> <xsl:template match=“foo” mode=“that”> Context setting <xsl:apply-templates select=“//bar”>
XSLT Procedural Programming Sequential programming style Basics for-each – loop through a set of elements call-template – like a standard procedure call
For-each programming example XSLT file http://www.cs.cornell.edu/Courses/cs502/2002SP/Demos/xslt/foreach.xsl XML base file http://www.cs.cornell.edu/Courses/cs502/2002SP/Demos/xslt/foreach.xml
Call-template programming example XML base file http://www.cs.cornell.edu/Courses/cs502/2002SP/Demos/xslt/call.xml XSLT file http://www.cs.cornell.edu/Courses/cs502/2002SP/Demos/xslt/call.xsl
Result Tree Creation Literals – any element not in xsl namespace <xsl:text> - content directly to output <xsl:value-of> - expression processing <xsl:copy> and <xsl:copyof> - Copy current node or selected nodes into result tree <xsl:element> - instantiate an element <xsl:attribute> - instantiate an attribute
Various other programming constructs Conditionals Variables (declaration and use) Some type conversion Sorting
Resources XSLT – WROX Press W3C XSLT Page TopXML XSL Tutorial ISBN 1-861005-06-7 W3C XSLT Page http://www.w3.org/Style/XSL/ TopXML XSL Tutorial http://www.vbxml.com/xsl/tutorials/intro/default.asp
XML Schema Define… elements attributes Nesting structure (parent/child rela.) Sibling sequence Sibling cardinality Presence or absence of text values Element and attribute data types Element and attribute default values
Simple vs. Complex Values Element with complex value contains other elements (has children) Element with simple value does not have children (e.g. text).
Restriction on type of content Syntax Simple Value Types Restriction on type of content Syntax <xs:element name=“xxx” type=“yyy”/> Examples <xs:element name=“lastname” type=“xs:string”/> <xs:element name=“age” type=“xs:number”/> <xs:element name=“age” type=“xs:date”/>
Facets Restrictions on values within type context Examples
Memo Instance Document Simple Example Memo Schema http://www.cs.cornell.edu/Courses/cs502/2002SP/Demos/xmlschema/memo.xsd Memo Instance Document http://www.cs.cornell.edu/Courses/cs502/2002SP/Demos/xmlschema/memo.xml
Type extension/restriction
Type Reuse
Type Reuse Example Base Type Definition Type Use Instance Document http://www.cs.cornell.edu/Courses/cs502/2002SP/Demos/xmlschema/address.xsd Type Use http://www.cs.cornell.edu/Courses/cs502/2002SP/Demos/xmlschema/person.xsd Instance Document http://www.cs.cornell.edu/Courses/cs502/2002SP/Demos/xmlschema/person.xml
DTD & XML Schema Equivalence DTD Example http://www.cs.cornell.edu/Courses/cs502/2002SP/Demos/xmlschema/channel.dtd Equivalent Schema http://www.cs.cornell.edu/Courses/cs502/2002SP/Demos/xmlschema/channel.xsd Instance Document http://www.cs.cornell.edu/Courses/cs502/2002SP/Demos/xmlschema/channel.xml