More XML
XML schema, XPATH, XSLT
CS 502 – 20020214
Carl Lagoze – Cornell University
Cornell CS 502
A little context
RDF
DAML+OIL
Xpath
XSLT
Semantic
Relationships
Traditional Library
Central control
Uniform expertise
Data
Decomposition
Concept
Building
Data
Transformation
DTD
Distributed, interlinked
Viewable Documents
Namespaces
Schema
Concept
Integration
Type Definition
Tag Sets
XML
Markup Syntax
Cornell CS 502
URIs
Name Convention
HTTP
Traditional Web
Access Method
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
Cornell CS 502
Simple vs. Complex Values
• Element with complex value contains other
elements (has children)
• Element with simple value does not have children
(e.g. text).
Cornell CS 502
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”/>
Cornell CS 502
Facets
• Restrictions on values within type context
• Examples
Cornell CS 502
Simple Example
• Memo Schema
– http://www.cs.cornell.edu/Courses/cs502/2002SP/Demo
s/xmlschema/memo.xsd
• Memo Instance Document
– http://www.cs.cornell.edu/Courses/cs502/2002SP/Demo
s/xmlschema/memo.xml
Cornell CS 502
Type extension/restriction
Cornell CS 502
Type Reuse
Cornell CS 502
Type Reuse Example
• Base Type Definition
– http://www.cs.cornell.edu/Courses/cs502/2002SP/Demo
s/xmlschema/address.xsd
• Type Use
– http://www.cs.cornell.edu/Courses/cs502/2002SP/Demo
s/xmlschema/person.xsd
• Instance Document
– http://www.cs.cornell.edu/Courses/cs502/2002SP/Demo
s/xmlschema/person.xml
Cornell CS 502
DTD & XML Schema Equivalence
• DTD Example
– http://www.cs.cornell.edu/Courses/cs502/2002SP/Demo
s/xmlschema/channel.dtd
• Equivalent Schema
– http://www.cs.cornell.edu/Courses/cs502/2002SP/Demo
s/xmlschema/channel.xsd
• Instance Document
– http://www.cs.cornell.edu/Courses/cs502/2002SP/Demo
s/xmlschema/channel.xml
Cornell CS 502
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
Cornell CS 502
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
Cornell CS 502
Axis
•
•
•
•
child: all children of context
descendent: all children, grandchildren, …
parent:
ancestor
Cornell CS 502
Node Test
• Element name: e.g. “Book”
• Wildcard: *
• Type(): where type is “node”, “text”, etc.
Cornell CS 502
Predicate
• Boolean and comparative operators
• Types
– Numbers
– Strings
– node-sets
• Functions
– Examples
• boolean starts-with(string, string)
• number count(node-set)
Cornell CS 502
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
Cornell CS 502
Abbreviations
• Child axis is default
– child::Book  Book
• Attribute axis  @
– Book[position() = 1][email protected]
• “.” (self), “..” (parent), “//” (descendent-or-self)
• position() = n  n
• Example
– Book[2][email protected]
Cornell CS 502
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
Cornell CS 502
XSLT Capabilities
•
•
•
•
•
•
Generate constant text
Filter out content
Change tree ordering
Duplicate nodes
Sort nodes
Any computational task (XSLT is “turing
complete”)
Cornell CS 502
XSLT Processing Model
XSLT
parse
Input
XML
doc
Cornell CS 502
Parsed
tree
serialize
Xformed
tree
Output
doc
(xml, html, etc)
XSLT “engine”
XML
input
XSLT
Engine
(SAXON)
XSLT
“program”
Cornell CS 502
Output
Document
(xml, html, …)
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
Cornell CS 502
Template Form
• Elements from xsl
namespace are transform
instructions
• Match attribute value is
xpath expression
• Non-xsl namespace
elements are literals.
Cornell CS 502
A simple example
• XML base file
– http://www.cs.cornell.edu/Courses/cs502/2002SP/Demo
s/xslt/simple.xml
• XSLT file
– http://www.cs.cornell.edu/Courses/cs502/2002SP/Demo
s/xslt/simple.xsl
Cornell CS 502
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”>
Cornell CS 502
XSLT Procedural Programming
• Sequential programming style
• Basics
– for-each – loop through a set of elements
– call-template – like a standard procedure call
Cornell CS 502
For-each programming example
• XML base file
– http://www.cs.cornell.edu/Courses/cs502/2002SP/Demo
s/xslt/foreach.xml
• XSLT file
– http://www.cs.cornell.edu/Courses/cs502/2002SP/Demo
s/xslt/foreach.xsl
Cornell CS 502
Call-template programming example
• XML base file
– http://www.cs.cornell.edu/Courses/cs502/2002SP/Demo
s/xslt/call.xml
• XSLT file
– http://www.cs.cornell.edu/Courses/cs502/2002SP/Demo
s/xslt/call.xsl
Cornell CS 502
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
Cornell CS 502
Various other programming constructs
•
•
•
•
Conditionals
Variables (declaration and use)
Some type conversion
Sorting
Cornell CS 502
Resources
• XSLT – WROX Press
– ISBN 1-861005-06-7
• W3C XSLT Page
– http://www.w3.org/Style/XSL/
• Arbortext XSL Tutorial
– http://www.nwalsh.com/docs/tutorials/xsl/
Cornell CS 502
Descargar

Identifiers and Types