More XML XPATH, XSLT CS 431 – February 23, 2005 Carl Lagoze – Cornell University.
-
Upload
martina-harper -
Category
Documents
-
view
214 -
download
0
Transcript of More XML XPATH, XSLT CS 431 – February 23, 2005 Carl Lagoze – Cornell University.
![Page 1: More XML XPATH, XSLT CS 431 – February 23, 2005 Carl Lagoze – Cornell University.](https://reader036.fdocuments.us/reader036/viewer/2022062805/5697bfe11a28abf838cb388c/html5/thumbnails/1.jpg)
More XMLXPATH, XSLT
CS 431 – February 23, 2005Carl Lagoze – Cornell University
![Page 2: More XML XPATH, XSLT CS 431 – February 23, 2005 Carl Lagoze – Cornell University.](https://reader036.fdocuments.us/reader036/viewer/2022062805/5697bfe11a28abf838cb388c/html5/thumbnails/2.jpg)
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
![Page 3: More XML XPATH, XSLT CS 431 – February 23, 2005 Carl Lagoze – Cornell University.](https://reader036.fdocuments.us/reader036/viewer/2022062805/5697bfe11a28abf838cb388c/html5/thumbnails/3.jpg)
Remember to think in terms of DOM trees
<?xml version="1.0" encoding="UTF-8"?>
<book><title lang='"en"'>"XML Basics"</title>
</book>
ty p e= E lem en tn am e= "b o o k "
ty p e= E lem en tn am e= "t i t l e"
ty p e= T ex td ata= "X M L
B as ics "
ty p e= A t t rib u ten am e= " lan g "
d ata= "en "
D O C U M E N T
![Page 4: More XML XPATH, XSLT CS 431 – February 23, 2005 Carl Lagoze – Cornell University.](https://reader036.fdocuments.us/reader036/viewer/2022062805/5697bfe11a28abf838cb388c/html5/thumbnails/4.jpg)
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
![Page 5: More XML XPATH, XSLT CS 431 – February 23, 2005 Carl Lagoze – Cornell University.](https://reader036.fdocuments.us/reader036/viewer/2022062805/5697bfe11a28abf838cb388c/html5/thumbnails/5.jpg)
Context, Axis, Node Test, Predicate
Root
Document
![Page 6: More XML XPATH, XSLT CS 431 – February 23, 2005 Carl Lagoze – Cornell University.](https://reader036.fdocuments.us/reader036/viewer/2022062805/5697bfe11a28abf838cb388c/html5/thumbnails/6.jpg)
Location Path Specification
• /step/step/…. – absolute from document root• step/step …. – relative from context• //step/step – anywhere in document tree
• where step is: axis::node-test[predicate]
![Page 7: More XML XPATH, XSLT CS 431 – February 23, 2005 Carl Lagoze – Cornell University.](https://reader036.fdocuments.us/reader036/viewer/2022062805/5697bfe11a28abf838cb388c/html5/thumbnails/7.jpg)
Axis
• child:: all children of context• descendant:: all children, grandchildren, …• parent:: • ancestor::
![Page 8: More XML XPATH, XSLT CS 431 – February 23, 2005 Carl Lagoze – Cornell University.](https://reader036.fdocuments.us/reader036/viewer/2022062805/5697bfe11a28abf838cb388c/html5/thumbnails/8.jpg)
Node Test
• Element name: e.g. “Book”– make sure to pay attention to namespaces!!!!
• Wildcard: *• Type(): where type is “node”, “text”, etc.
![Page 9: More XML XPATH, XSLT CS 431 – February 23, 2005 Carl Lagoze – Cornell University.](https://reader036.fdocuments.us/reader036/viewer/2022062805/5697bfe11a28abf838cb388c/html5/thumbnails/9.jpg)
Predicate
• Boolean and comparative operators• Types
– Numbers– Strings– node-sets (the set of nodes selected)
• Functions– Examples
• boolean starts-with(string, string)• number count(node-set)• number position()
![Page 10: More XML XPATH, XSLT CS 431 – February 23, 2005 Carl Lagoze – Cornell University.](https://reader036.fdocuments.us/reader036/viewer/2022062805/5697bfe11a28abf838cb388c/html5/thumbnails/10.jpg)
xpath examples
• http://www.cs.cornell.edu/lagoze/courses/CS431/2005sp/Examples/Lecture10/base.xml
• /child::source/child::AAA– or /source/child since child is default axis
• /child::source/child::*[position()=2]– or /source/*[2]
• /child::source/child::AAA[position()=2]/attribute::id– or /source/child[2]/@id
• /child::source/child::AAA/attribute()– or /source/child/attribute()
![Page 11: More XML XPATH, XSLT CS 431 – February 23, 2005 Carl Lagoze – Cornell University.](https://reader036.fdocuments.us/reader036/viewer/2022062805/5697bfe11a28abf838cb388c/html5/thumbnails/11.jpg)
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
![Page 12: More XML XPATH, XSLT CS 431 – February 23, 2005 Carl Lagoze – Cornell University.](https://reader036.fdocuments.us/reader036/viewer/2022062805/5697bfe11a28abf838cb388c/html5/thumbnails/12.jpg)
XSLT Capabilities
• Produce any type of document– xHTML, XML, PDF…
• Generate constant text• Filter out content• Change tree ordering• Duplicate nodes• Sort nodes• Any computational task (XSLT is “turing
complete”)– extra credit if you write an OS in XSLT
![Page 13: More XML XPATH, XSLT CS 431 – February 23, 2005 Carl Lagoze – Cornell University.](https://reader036.fdocuments.us/reader036/viewer/2022062805/5697bfe11a28abf838cb388c/html5/thumbnails/13.jpg)
XSLT Processing Model
Input XMLdoc
Parsedtree
Xformedtree
Outputdoc
(xml, html, etc)
parse serialize
InputXSLdoc
Input XMLdoc
Parsedtree
parse
![Page 14: More XML XPATH, XSLT CS 431 – February 23, 2005 Carl Lagoze – Cornell University.](https://reader036.fdocuments.us/reader036/viewer/2022062805/5697bfe11a28abf838cb388c/html5/thumbnails/14.jpg)
XSLT “engine”
XMLinput
XSLT“program”
XSLTEngine
(SAXON)
OutputDocument
(xml, html, …)
![Page 15: More XML XPATH, XSLT CS 431 – February 23, 2005 Carl Lagoze – Cornell University.](https://reader036.fdocuments.us/reader036/viewer/2022062805/5697bfe11a28abf838cb388c/html5/thumbnails/15.jpg)
Stylesheet Document or Program
• XML document rooted in <stylesheet> element
• Body is set of templates or rules– match attribute specifies xpath of elements in source
tree– Body of template specifies contribution of source
elements to result tree
![Page 16: More XML XPATH, XSLT CS 431 – February 23, 2005 Carl Lagoze – Cornell University.](https://reader036.fdocuments.us/reader036/viewer/2022062805/5697bfe11a28abf838cb388c/html5/thumbnails/16.jpg)
Associating an XML document with a transform
![Page 17: More XML XPATH, XSLT CS 431 – February 23, 2005 Carl Lagoze – Cornell University.](https://reader036.fdocuments.us/reader036/viewer/2022062805/5697bfe11a28abf838cb388c/html5/thumbnails/17.jpg)
XSL Execution Model
• Templates represent a set of rules• Rule matching is done within current tree
context• Rules are not executed in order• Default behavior is depth-first walk of tree,
outputting element values
• http://www.cs.cornell.edu/lagoze/courses/CS431/2005sp/Examples/Lecture10/base.xml
• http://www.cs.cornell.edu/lagoze/courses/CS431/2005sp/Examples/Lecture10/null.xsl
![Page 18: More XML XPATH, XSLT CS 431 – February 23, 2005 Carl Lagoze – Cornell University.](https://reader036.fdocuments.us/reader036/viewer/2022062805/5697bfe11a28abf838cb388c/html5/thumbnails/18.jpg)
Template Form
• Sequential execution within template
• Elements from xsl namespace are transform instructions
• Match attribute value is xpath expression setting rule for execution of body
• Non-xsl namespace elements are literals.
• <xsl:apply-templates>– set context to next tree
step– re-evaluate rules
![Page 19: More XML XPATH, XSLT CS 431 – February 23, 2005 Carl Lagoze – Cornell University.](https://reader036.fdocuments.us/reader036/viewer/2022062805/5697bfe11a28abf838cb388c/html5/thumbnails/19.jpg)
Result Tree Creation
• Literals – any element not in xsl namespace• <xsl:text> - send content directly to output
(retain whitespaces)• <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
![Page 20: More XML XPATH, XSLT CS 431 – February 23, 2005 Carl Lagoze – Cornell University.](https://reader036.fdocuments.us/reader036/viewer/2022062805/5697bfe11a28abf838cb388c/html5/thumbnails/20.jpg)
A simple example
• XML base file– http://www.cs.cornell.edu/lagoze/courses/CS431/200
5sp/Examples/Lecture10/simple.xml
• XSLT file– http://www.cs.cornell.edu/lagoze/courses/
CS431/2005sp/Examples/Lecture10/simple.xsl
![Page 21: More XML XPATH, XSLT CS 431 – February 23, 2005 Carl Lagoze – Cornell University.](https://reader036.fdocuments.us/reader036/viewer/2022062805/5697bfe11a28abf838cb388c/html5/thumbnails/21.jpg)
Modifying rule set and context
• 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”>– Modifies default depth-first behavior
• Conflict resolution rules
• http://www.cs.cornell.edu/lagoze/courses/CS431/2005sp/Examples/Lecture10/elements.xsl
• http://www.cs.cornell.edu/lagoze/courses/CS431/2005sp/Examples/Lecture10/elements2.xsl
![Page 22: More XML XPATH, XSLT CS 431 – February 23, 2005 Carl Lagoze – Cornell University.](https://reader036.fdocuments.us/reader036/viewer/2022062805/5697bfe11a28abf838cb388c/html5/thumbnails/22.jpg)
XSLT Procedural Programming
• Sequential programming style• Basics
– for-each – loop through a set of elements– call-template – like a standard procedure call
![Page 23: More XML XPATH, XSLT CS 431 – February 23, 2005 Carl Lagoze – Cornell University.](https://reader036.fdocuments.us/reader036/viewer/2022062805/5697bfe11a28abf838cb388c/html5/thumbnails/23.jpg)
For-each programming example
• XML base file– http://www.cs.cornell.edu/lagoze/courses/
CS431/2005sp/Examples/Lecture10/foreach.xml
• XSLT file– http://www.cs.cornell.edu/lagoze/courses/
CS431/2005sp/Examples/Lecture10/foreach.xsl
![Page 24: More XML XPATH, XSLT CS 431 – February 23, 2005 Carl Lagoze – Cornell University.](https://reader036.fdocuments.us/reader036/viewer/2022062805/5697bfe11a28abf838cb388c/html5/thumbnails/24.jpg)
Call-template programming example
• XML base file– http://www.cs.cornell.edu/lagoze/courses/
CS431/2005sp/Examples/Lecture10/call.xml
• XSLT file– http://www.cs.cornell.edu/lagoze/courses/
CS431/2005sp/Examples/Lecture10/call.xsl
![Page 25: More XML XPATH, XSLT CS 431 – February 23, 2005 Carl Lagoze – Cornell University.](https://reader036.fdocuments.us/reader036/viewer/2022062805/5697bfe11a28abf838cb388c/html5/thumbnails/25.jpg)
Various other programming constructs
• Conditionals• Variables (declaration and use)• Some type conversion• Sorting