ertan deniz ertan.deniz70@gmail.com instructor. xml schema document navigation (xpath) document...

Post on 11-Jan-2016

217 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

CENG454 – XML and XML Web Services

Ertan DenizErtan.deniz70@gmail.com

Instructor

XML Technologies

Agenda XML Schema Document Navigation (Xpath) Document Transformation (XSLT)

Main Reference Portions of this lecture are derived from in “Web Services: Principles and Technology” by Michael P. Papazoglou and its accompanying instructors materials, © Pearson Education Limited 2008.

XML Schema

Michael P. Papazoglou, Web Services, 1st Edition, © Pearson Education Limited 2008

XML schema refers to a document that defines the content of and structure for expressing XML documents. Schema is commonly used in the area of databases to

refer to the logical structure of a database. Schemas provide support for additional meta-data

characteristics such as structural relationships, cardinality, valid values, and data types.

Each type of schema acts as a method of describing data characteristics and applying rules and constraints to a referencing XML document.

An XML schema describes the elements and attributes that may be contained in a schema conforming document and the ways that the elements may be arranged within a document structure.

XML schema and instance document

Michael P. Papazoglou, Web Services, 1st Edition, © Pearson Education Limited 2008

<?xml version="1.0" encoding="UTF-8"?>

<Person xmlns:xsi="http://www.w3.org/ 2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="Person.xsd">

<First>Sophie</First>

<Last>Jones</Last>

<Age>34</Age>

</Person>

File “Person.xml”<?xml version="1.0" encoding="UTF-8"?><xs:schema xmlns:xs="http://www.w3.org/2001/ XMLSchema"> <xs:element name="Person"> <xs:complexType> <xs:sequence> <xs:element name="First“ type="xs:string"/> <xs:element name="Middle“ type="xs:string“ minOccurs="0"/> <xs:element name="Last“ type="xs:string"/> <xs:element name="Age“ type="xs:integer"/> </xs:sequence> </xs:complexType> </xs:element></xs:schema>

File “Person.xsd”

XML Schema Content

Michael P. Papazoglou, Web Services, 1st Edition, © Pearson Education Limited 2008

Annotation (Schema Comment) Element Name, Type

Simple Type (Int, String) Complex Type MinOccurs,MaxOccurs

Attribute Name,Type Sequence (Specifies the exact Order) Choice ( Any one, but not at all) All (All required, any order) Extension,Restriction

Schema components

Michael P. Papazoglou, Web Services, 1st Edition, © Pearson Education Limited 2008

<element name="item"><annotation>

<documentation>One item of a purchase order with itsdetails</documentation>

</annotation><complexType>

<sequence><choice>

<element name="productName" type="string"/><element name="productName" type="string"/>

</choice><element name="quantity">

<simpleType><restriction base="positiveInteger">

<maxExclusive value="100"/></restriction>

</simpleType></element><element name="price" type="decimal">

<annotation><documentation>Needs to be specified in

US$</documentation></annotation>

</element><element ref="ipo:comment" minOccurs="0"

maxOccurs="5"/><element name="shipDate" type="date" minOccurs="0"/>

</sequence><attribute name="partNum" type="ipo:Sku"/>

</complexType></element>

• Elements and their content model

Schema components

Michael P. Papazoglou, Web Services, 1st Edition, © Pearson Education Limited 2008

<xs:attribute name="name" type="xs:NCName"/>

<xs:attribute name="mixed" type="xs:boolean" use="optional" default="false"/>

<xs:attribute name="abstract" type="xs:boolean" use="optional" default="false"/>

<xs:attribute name="final" type="xs:derivationSet"/>

<xs:attribute name="block" type="xs:derivationSet"/>

Attributes and Attribute Groups

Schema components – Complex Types

Michael P. Papazoglou, Web Services, 1st Edition, © Pearson Education Limited 2008

<xsd:complexType name="PersonType"><xsd:sequence>

<xsd:element name="First" type="xsd:string"/><xsd:element name="Last" type="xsd:string"/><xsd:element name="Title" type="xsd:string“

minOccurs="0"/><xsd:element name="PhoneExt" type="xsd:int"/><xsd:element ref="EMail"/>

</xsd:sequence></xsd:complexType><xsd:element name="Person" type="PersonType"/><xsd:element name="VIP“

substitutionGroup="Person"><xsd:complexType>

<xsd:complexContent><xsd:extension base="PersonType">

<xsd:attribute name="IQ" type="xsd:int"/></xsd:extension>

</xsd:complexContent></xsd:complexType>

</xsd:element>

XML Schema – Complex Type Extensions<?xml version="1.0" encoding="UTF-8"?>

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:PO="http://www.plastics_supply.com/PurchaseOrder" targetNamespace="http://www.plastics_supply.com/PurchaseOrder">

<xsd:complexType name="Address"> <xsd:sequence> <xsd:element name="Number" type="xsd:decimal"/> <xsd:element name="Street" type="xsd:string"/> <xsd:element name="City" type="xsd:string" minOccurs="0"/> </xsd:sequence></xsd:complexType>

<xsd:complexType name="AustralianAddress"> <xsd:complexContent>

<xsd:extension base="PO:Address"><xsd:sequence> <xsd:element name="State" type="xsd:string"/> <xsd:element name="PostalCode" type="xsd:decimal"/> <xsd:element name="Country" type="xsd:string"/></xsd:sequence>

</xsd:extension> </xsd:complexContent></xsd:complexType>

</xsd:schema>

Michael P. Papazoglou, Web Services, 1st Edition, © Pearson Education Limited 2008

XML Schema – Complex Type Restrictions

Michael P. Papazoglou, Web Services, 1st Edition, © Pearson Education Limited 2008

<xsd:complexType name="AustralianPostalAddress"> <xsd:complexContent> <xsd:restriction base="PO:AustralianAddress">

<xsd:sequence> <xsd:element name="Number" type="xsd:decimal"/> <xsd:element name="Street" type="xsd:string"/> <xsd:element name="City" type="xsd:string" minOccurs="0"

maxOccurs="0"/> <xsd:element name="State" type="xsd:string"/> <xsd:element name="PostalCode" type="xsd:decimal"/>

<xsd:element name="Country" type="xsd:string"/> </xsd:sequence> </xsd:restriction> </xsd:complexContent> </xsd:complexType>

XML Schema – Complex Type Polymorphism

Michael P. Papazoglou, Web Services, 1st Edition, © Pearson Education Limited 2008

<xsd:complexType name="PurchaseOrder"> <xsd:sequence> <xsd:element name="Name" minOccurs="1" maxOccurs="1"> <xsd:simpleType> <xsd:restriction base="xsd:string"/> </xsd:simpleType> </xsd:element> <xsd:element name="shippingAddress" type="PO:Address" minOccurs= "1" maxOccurs="1"/> <xsd:element name="billingAddress" type="PO:Address" minOccurs= "1" maxOccurs="1"/> <xsd:choice minOccurs="1" maxOccurs="1"> <xsd:element name="BillingDate" type="xsd:date"/> <xsd:element name="ShippingDate" type="xsd:date"/> </xsd:choice> </xsd:sequence> </xsd:complexType Variant of the PurchaseOrder type that uses

the base type Address for its billingAddress and shippingAddress elements.

XML Schema – Complex Type Polymorphism

Michael P. Papazoglou, Web Services, 1st Edition, © Pearson Education Limited 2008

<?xml version="1.0" encoding=”UTF-8”?><PO:PurchaseOrder xmlns:PO="http://www.plastics_supply.com/PurchaseOrder">

<Name> Plastic Products </Name> <shippingAddress xsi:type="PO:AustralianAddress"> <Number> 459 </Number> <Street> Wickham st. </Street> <City> Fortitude Valley </City> <State> QLD </State> <PostalCode> 4006 </PostalCode> <Country> Australia </country> </shippingAddress> <billingAddress xsi:type=="PO:AustralianAddress"> <Number> 158 </Number> <Street> Edward st. </Street> <State> QLD </State> <PostalCode> 4000 </PostalCode> <Country> Australia </Country> </billingAddress> <BillingDate> 2002-09-15 </BillingDate></PO:PurchaseOrder>

An instance document can now use any type derived from base type Address for its billingAddress and shippingAddress elements.

PurchaseOrder type uses thederived AustralianPostalAddress type as its billingAddress and the derived AustralianAddress type as its shippingAddress elements.

Agenda XML Schemas Document Navigation (Xpath) Document Transformation (XSLT)

Xpath Standart XPath is a standard for developing expressions that can

be used to find specific pieces of information within an XML document.

XPath is an abstract language that defines a tree model that codifies the logical structure of an XML document against which all expressions are evaluated.

selects nodes in an XML document

Michael P. Papazoglou, Web Services, 1st Edition, © Pearson Education Limited 2008

Sample XML View as tree

Kenneth M.Anderson, CSCI 7818 Lecture

Xpath Expressions Example Xpath

gradebook/student/grade is an XPath expression that selects all “grade” nodes

in the example on the previous slide XPath can even select attributes

gradebook/student/grade[@name=“hw3”] More Examples

//grade “start at the root node and find all grade nodes”

gradebook/student[2] “select the second student node under gradebook”

Kenneth M.Anderson, CSCI 7818 Lecture

Agenda XML Schema Document Navigation (Xpath) Document Transformation (XSLT)

XSLT XSLT stands for XML Stylesheet Language,

Transformations XML is primarily used to describe and contain data.

Although the most obvious and effective use of XML is to describe data, the eXtensible Stylesheet Language Transform (XSLT) can also be used to format or transform XML content for presentation to users.

The XSLT process transforms an XML structure into presentation technology such as HTML or into any other required forms and structures.

XSLT uses the XML Path Language (Xpath) to address and locate sections of XML documents.

Michael P. Papazoglou, Web Services, 1st Edition, © Pearson Education Limited 2008

Transformations XSLT was developed as part of the XML stylesheet

standards effort What’s a stylesheet?

A stylesheet is a device for specifying presentation information independent of content

Stylesheets in HTML The Web already has a stylesheet language called

“cascading stylesheets” or CSS Specifies mechanisms for transforming XML to other

structures XML->XML XML->HTML XML->PDF

Kenneth M.Anderson, CSCI 7818 Lecture

XSLT To understand XSLT, you must view XML documents as

tree structures XSLT provides rules to transform one tree into

another tree It traverses the source tree in an order dictated by the

stylesheet and generates the destination tree using the rules of the stylesheet

Kenneth M.Anderson, CSCI 7818 Lecture

XSLT XSLT transforms XML documents using stylesheets that

are themselves XML documents All XSLT stylesheets have the following form

<?xml version="1.0"?><xsl:stylesheet version="1.0"xmlns:xsl="http://www.w3.org/1999/XSL/Transform">…templates and transformation rules go here…

</xsl:stylesheet>

Kenneth M.Anderson, CSCI 7818 Lecture

Stylesheets Stylesheets consist of templates that “match” nodes of

the source XML tree (i.e. document) Each template then specifies what should be generated

in the destination tree (or document) Match="/"

Associates the template with the root of the XML source document

A template looks like this:

<xsl:template match="/"> <html>

<head><title>Grade Book</title>

</head><xsl:apply-templates/>

</html></xsl:template>

Kenneth M.Anderson, CSCI 7818 Lecture

XSLT Architecture

Kenneth M.Anderson, CSCI 7818 Lecture

More Details

Stylesheet processing XSLT processor is handed a document and a stylesheet

It starts a (breadth-first) traversal at the root node and checks to see if there is a template match If so, it applies the template and looks for an

“xsl:apply-templates” element If such an element exists, it continues the traversal if no such element exists, the traversal stops

If not, it traverses down the tree looking for a template match with some other node of the tree

Kenneth M.Anderson, CSCI 7818 Lecture

XSL : apply-templates

The apply-templates tag determines if an XSLT processor continues traversing a document once a template match has occurred

The apply-templates tag can contain an attribute called “select” which can specify the specific children to continue traversing using an XPath expression <xsl:apply-templates/>

All children traversed <xsl:apply-templates select=“grade[@name=‘HW4’]”>

All grade nodes with a name attribute equal to “HW4” traversed (any other nodes skipped during the subsequent traversal)

Kenneth M.Anderson, CSCI 7818 Lecture

XSL : Repetition

<xsl:for-each select = “item”>Do something here ...

</xsl:for-each>

The select attribute is an Xpath expression that selects the nodes to iterate over

Kenneth M.Anderson, CSCI 7818 Lecture

Repetition Example<xsl:template match="/">

<html><head>

<title>Grade Book</title></head><body><ul><xsl:for-each select=“student/grade”><li>Grade: <xsl:value-of select=".”/></li></xsl:for-each></ul></body>

</html></xsl:template>

Kenneth M.Anderson, CSCI 7818 Lecture

Repetition Example (HTML Result)<html><head><title>Grade

Book</title></head><body><ul><li>Grade: 10<li><li>Grade: 7<li><li>Grade: 6<li><li>Grade: 10<li>… more grades here ...</ul></body></html>

Kenneth M.Anderson, CSCI 7818 Lecture

Grade Book Grade: 10 Grade: 7 Grade: 6 Grade: 10

HTML Result

Additional Tags

Kenneth M.Anderson, CSCI 7818 Lecture

<xsl:value-of select=“.”> <xsl:if test=“position()=last()”> <xsl:choose>

<xsl:when test = “position()=last()”> Do something for last element </xsl:when> <xsl:when test = “position()=first()”> Do something for first element </xsl:when> <xsl:otherwise> Do something for other elements </xsl:otherwise></xsl:choose>

Additional Tags

Kenneth M.Anderson, CSCI 7818 Lecture

<xsl:sort data-type=“” select=“” order=“”><xsl:apply-templates select=“//student”>

<xsl:sort select=“name”/> </xsl:apply-templates>

This selects all student nodes, sorts them by name, and then applies templates to them

More Information

We can not cover entire standards Xpath Standard

http://www.w3.org/TR/xpath XSLT Standard Reference

http://www.w3.org/TR/xslt/ XSLT General

http://www.xslt.com/ Online XSLT Sample http://www.w3schools.com/xsl/tryxslt.asp?xmlfile=

cdcatalog&xsltfile=cdcatalog

Reference on XSLThttp://www.zvon.org/xxl/XSLTreference/Output/index

.html

Kenneth M.Anderson, CSCI 7818 Lecture

References

Michael P. Papazoglou, Web Services, 1st Edition, © Pearson Education Limited 2008. (Book Slides) Kenneth M.Anderson, CSCI 7818 – XSLT Overview http://www.cs.colorado.edu/~kena/classes/7818/f08/lectures/lecture_2_xslt_overview.pdf XSLT ve Xpath resourceshttp://www.w3schools.com .NET XML Tools Tutorial .NET Xpath Sample (Code Project)

http://www.codeproject.com/KB/XML/gsxpathtutorial.aspx

Questions ?

Thanks for your interest...

top related