cornell cs 502 more xml xml schema, xpath, xslt cs 502 – 20020214 carl lagoze – cornell...

Post on 15-Jan-2016

222 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Cornell CS 502

More XMLXML schema, XPATH, XSLT

CS 502 – 20020214Carl Lagoze – Cornell University

Cornell CS 502

A little context

Traditional LibraryCentral control

Uniform expertise

Traditional WebDistributed, interlinkedViewable Documents

XMLMarkup Syntax

URIsName Convention

HTTPAccess Method

SchemaType Definition

NamespacesConcept

Integration

XpathData

Decomposition

XSLTData

Transformation

DTDTag Sets

RDFSemantic

Relationships

DAML+OILConceptBuilding

Cornell CS 502

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/De

mos/xmlschema/memo.xsd

• Memo Instance Document– http://www.cs.cornell.edu/Courses/cs502/2002SP/De

mos/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/De

mos/xmlschema/address.xsd

• Type Use– http://www.cs.cornell.edu/Courses/cs502/2002SP/De

mos/xmlschema/person.xsd

• Instance Document– http://www.cs.cornell.edu/Courses/cs502/2002SP/De

mos/xmlschema/person.xml

Cornell CS 502

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

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]/@color

• “.” (self), “..” (parent), “//” (descendent-or-self)• position() = n n• Example

– Book[2]/@color

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

Input XMLdoc

Parsedtree

Xformedtree

Outputdoc

(xml, html, etc)

parse XSLT serialize

Cornell CS 502

XSLT “engine”

XMLinput

XSLT“program”

XSLTEngine

(SAXON)

OutputDocument

(xml, html, …)

Cornell CS 502

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/De

mos/xslt/simple.xml

• XSLT file– http://www.cs.cornell.edu/Courses/cs502/2002SP/De

mos/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/De

mos/xslt/foreach.xml

• XSLT file– http://www.cs.cornell.edu/Courses/cs502/2002SP/

Demos/xslt/foreach.xsl

Cornell CS 502

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

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/

top related