A technical introduction Felix Eickhoff [email protected] XML Basics.

35
A technical A technical introduction introduction Felix Eickhoff Felix Eickhoff [email protected] [email protected] XML Basics
  • date post

    21-Dec-2015
  • Category

    Documents

  • view

    223
  • download

    0

Transcript of A technical introduction Felix Eickhoff [email protected] XML Basics.

Page 1: A technical introduction Felix Eickhoff felix.eickhoff@gmx.net XML Basics.

A technical introductionA technical introduction

Felix EickhoffFelix Eickhoff

[email protected]@gmx.net

XML Basics

Page 2: A technical introduction Felix Eickhoff felix.eickhoff@gmx.net XML Basics.

Overview

Why XMLWhy XML XML FundamentalsXML Fundamentals Document Type DefinitionsDocument Type Definitions XML SchemasXML Schemas Namespaces in XMLNamespaces in XML XSL TransformationsXSL Transformations XXPPathath XXLLinksinks XXPPointersointers

Page 3: A technical introduction Felix Eickhoff felix.eickhoff@gmx.net XML Basics.

Why XML

W3C endorsed standardW3C endorsed standard Generic syntax to mark up dataGeneric syntax to mark up data More flexible than HTMLMore flexible than HTML Need for sharing dataNeed for sharing data

Page 4: A technical introduction Felix Eickhoff felix.eickhoff@gmx.net XML Basics.

XML Fundamentals

XML Version, DoctypeXML Version, Doctype ElementsElements

Start and End TagStart and End Tag AttributesAttributes Case sensitiveCase sensitive Contain other elements or dataContain other elements or data

CommentsComments Well formednessWell formedness

Page 5: A technical introduction Felix Eickhoff felix.eickhoff@gmx.net XML Basics.

XML Fundamentals - Example<?xml version=„1.0“?><?xml version=„1.0“?><?DOCTYPE address-book SYSTEM „address-book.dtd“?><?DOCTYPE address-book SYSTEM „address-book.dtd“?><address-book><address-book> <entry><entry> <PersonName honorific=„Ms.“><PersonName honorific=„Ms.“> <SingleName>Doe</SingleName><SingleName>Doe</SingleName> <PersonName/><PersonName/> <address><address> <street>34 Fountain Square Plaza</street><street>34 Fountain Square Plaza</street> <postal-code>45202</postal-code><postal-code>45202</postal-code> </address></address> <tel prefered=„true“>515-73737</tel><tel prefered=„true“>515-73737</tel> <tel>515-28378</tel><tel>515-28378</tel> <email href=„mailto:[email protected]“/><email href=„mailto:[email protected]“/> </entry></entry> <entry><entry> <PersonName honrorifc=„Mr.“><FirstName>Jack</FirstName><PersonName honrorifc=„Mr.“><FirstName>Jack</FirstName> <MiddleName>Phillip</MiddleName><MiddleName>Phillip</MiddleName> <LastName>Smith</LastName></PersonName><LastName>Smith</LastName></PersonName> <tel>737-378477</tel><tel>737-378477</tel> <email href=„mailto:[email protected]“/><email href=„mailto:[email protected]“/> </entry></entry></address-book></address-book>

Page 6: A technical introduction Felix Eickhoff felix.eickhoff@gmx.net XML Basics.

XML Trees – Example

F irs tN am e M id d leN am e L as tN am e

P erson N am e te l em a il

en try

ad d ress -b ook

Page 7: A technical introduction Felix Eickhoff felix.eickhoff@gmx.net XML Basics.

Document Type Definitions - DTD Defines language grammar for a particular Defines language grammar for a particular

XML applicationXML application

What for:What for: Specific XML applicationsSpecific XML applications Validation of XML-filesValidation of XML-files

Page 8: A technical introduction Felix Eickhoff felix.eickhoff@gmx.net XML Basics.

DTD - Example<!ELEMENT address-book (entry+)><!ELEMENT address-book (entry+)><!ELEMENT entry (name, address*, tel*, fax*, email*)><!ELEMENT entry (name, address*, tel*, fax*, email*)>

<!ELEMENT PersonName (SingleName|(FirstName, MiddleName*, <!ELEMENT PersonName (SingleName|(FirstName, MiddleName*, LastName))>LastName))><!ELEMENT FirstName (#PCDATA)><!ELEMENT FirstName (#PCDATA)><!ELEMENT MiddleName (#PCDATA)><!ELEMENT MiddleName (#PCDATA)><!ELEMENT LastName (#PCDATA)><!ELEMENT LastName (#PCDATA)><!ELEMENT SingleName (#PCDATA)><!ELEMENT SingleName (#PCDATA)>

<!ELEMENT address (street, postal-code><!ELEMENT address (street, postal-code><!ELEMENT street (#PCDATA)><!ELEMENT street (#PCDATA)><!ELEMENT postal-code (#PCDATA)><!ELEMENT postal-code (#PCDATA)>

<!ELEMENT tel (#PCDATA)><!ELEMENT tel (#PCDATA)><!ATTLIST tel preferred (true | false) „false“><!ATTLIST tel preferred (true | false) „false“><!ELEMENT fax (#PCDATA)><!ELEMENT fax (#PCDATA)><!ATTLIST fax preferred (true | false) „false“><!ATTLIST fax preferred (true | false) „false“><!ELEMENT email EMPTY><!ELEMENT email EMPTY><!ELEMENT email href CDATA #REQUIRED<!ELEMENT email href CDATA #REQUIRED preferred (true|false) „false“>preferred (true|false) „false“>

Page 9: A technical introduction Felix Eickhoff felix.eickhoff@gmx.net XML Basics.

Document Type Defintions

Element DeclarationElement Declaration #PCDATA, EMPTY, ANY#PCDATA, EMPTY, ANY

SequencesSequences Using regular Expressions (* , + ,| )Using regular Expressions (* , + ,| )

Attribute DeclarationAttribute Declaration CDATA, NMTOKEN, ENUMERATION, ENTITY, CDATA, NMTOKEN, ENUMERATION, ENTITY,

ID, IDREF, NOTATION, #REQUIRED, #IMPLIED, ID, IDREF, NOTATION, #REQUIRED, #IMPLIED, #FIXED#FIXED

EntitiesEntities Internal and ExternalInternal and External

Page 10: A technical introduction Felix Eickhoff felix.eickhoff@gmx.net XML Basics.

XML Schemas

Alternative to DTDAlternative to DTD XML SyntaxXML Syntax Data TypingData Typing Content ModelsContent Models ExtensibleExtensible Dynamic SchemasDynamic Schemas Self DocumentingSelf Documenting

Page 11: A technical introduction Felix Eickhoff felix.eickhoff@gmx.net XML Basics.

XML - Example<?xml version=„1.0“?><?xml version=„1.0“?><?DOCTYPE address-book SYSTEM „address-book.xsd“<?DOCTYPE address-book SYSTEM „address-book.xsd“<address-book><address-book> <entry><entry> <PersonName honorific=„Ms.“><PersonName honorific=„Ms.“> <SingleName>Doe</SingleName><SingleName>Doe</SingleName> <PersonName/><PersonName/> <address><address> <street>34 Fountain Square Plaza</street><street>34 Fountain Square Plaza</street> <postal-code>45202</postal-code><postal-code>45202</postal-code> </address></address> <tel prefered=„true“>515-73737</tel><tel prefered=„true“>515-73737</tel> <tel>515-28378</tel><tel>515-28378</tel> <email href=„mailto:[email protected]“/><email href=„mailto:[email protected]“/> </entry></entry> <entry><entry> <PersonName honorific=„Mr.“><FirstName>Jack</FirstName><PersonName honorific=„Mr.“><FirstName>Jack</FirstName> <MiddleName>Phillip</MiddleName><MiddleName>Phillip</MiddleName> <LastName>Smith</LastName></PersonName><LastName>Smith</LastName></PersonName> <tel>737-378477</tel><tel>737-378477</tel> <email href=„mailto:[email protected]“/><email href=„mailto:[email protected]“/> </entry></entry></address-book></address-book>

Page 12: A technical introduction Felix Eickhoff felix.eickhoff@gmx.net XML Basics.

XML Schema - Example<?xml version=„1.0“ ?><schema xmlns=„http://www.w3.org/2000/10/XMLSchema“>

<simpleType name=„Person Title“> <restriction base=„string“> <enumeration value=„Mr.“/> <enumeration value=„Ms.“/> </restriction></simpleType>

<complexType name=„Text“ content=„textonly“> <restriction base=„string“ /></complexType>

Page 13: A technical introduction Felix Eickhoff felix.eickhoff@gmx.net XML Basics.

XML Schema – Example (2)<element name=„PersonName“> <complexType content=„element“> <choice> <element name=„Single Name“ type=„Text“ minOccurs=„1“ maxOccurs=„1“/> <sequence> <element name=„FirstName“ type=„Text“ minOccurs=„1“ maxOccurs=„1“/> <element name=„MiddleName“type=„Text“ minOccurs=„1“ maxOccurs=„unbounded“/> <element name=„LastName“ type=„Text“ minOccurs=„1“ maxOccurs=„1“/> </sequence> </choice> <attribute name=„honorific“ ref=„PersonTitle“/> </complexType></element>

...

</schema>

Page 14: A technical introduction Felix Eickhoff felix.eickhoff@gmx.net XML Basics.

Namespaces in XML

Distinguish between elements and attributes Distinguish between elements and attributes from different XML applicationsfrom different XML applications

Group related elements and attributes Group related elements and attributes togethertogether

Based on unique Domain-NamesBased on unique Domain-Names

Page 15: A technical introduction Felix Eickhoff felix.eickhoff@gmx.net XML Basics.

Namespace - Example<?xml version=„1.0“ ?>

<catalog> <painting> <title>Memory of the Garden of Etten</title> <artist>Vincent Van Gogh</artist> <date>November, 1888</date> <description> Two women ... </description> </painting>

<!– Many more paintings... -->

</catalog>

Page 16: A technical introduction Felix Eickhoff felix.eickhoff@gmx.net XML Basics.

Namespace – Example(2)<?xml version=„1.0“ ?>

<RDF> <Description about=„http://name.com/impressionists.html“> <title>Impressionists Paintings</title> <creator>Joe Doe</creator> <description> A list of famous impressionist paintings organized by painter and date </description> <date>2001-10-05</date> </Description></RDF>

Page 17: A technical introduction Felix Eickhoff felix.eickhoff@gmx.net XML Basics.

Namespace – Example(3)<?xml version=„1.0“ ?><catalog> <RDF> <Description about=„http://name.com/impressionists.html“> <title>Impressionists Paintings</title> <creator>Joe Doe</creator> <description> A list of famous impressionist paintings organized by painter and date </description> <date>2001-10-05</date> </Description> </RDF> <painting> <title>Memory of the Garden of Etten</title> <artist>Vincent Van Gogh</artist> <date>November, 1888</date> <description> Two women ... </description> </painting></catalog>

Page 18: A technical introduction Felix Eickhoff felix.eickhoff@gmx.net XML Basics.

Namespace – Example(4)<?xml version=„1.0“ ?><catalog> <rdf:RDF xmlns:rdf=„http://www.w3.org./TR/REC-rdf-synstax#“> <rdf:Description xlmns:dc=„http://purl.org/dc“ about=„http://name.com/impressionists.html“> <dc:title>Impressionists Paintings</dc:title> <dc:creator>Joe Doe</dc:creator> <dc:description> A list of famous impressionist paintings organized by painter and date </dc:description> <dc:date>2001-10-05</dc:date> </rdf:Description> </rdf:RDF> <painting> <title>Memory of the Garden of Etten</title> <artist>Vincent Van Gogh</artist> <date>November, 1888</date> <description> Two women ... </description> </painting></catalog>

Page 19: A technical introduction Felix Eickhoff felix.eickhoff@gmx.net XML Basics.

XSL Transformations

High-level language for defining XML High-level language for defining XML TransformationsTransformations

Format information for DisplayFormat information for Display Useful for managing data exchangeUseful for managing data exchange Report WritingReport Writing Work done by Stylesheet processorsWork done by Stylesheet processors

Page 20: A technical introduction Felix Eickhoff felix.eickhoff@gmx.net XML Basics.

Stylesheet – Example Input<?xml version=„1.0“ ?><people> <person born=„1912“ died=„1954“> <name> <first_name>Alan</first_name> <last_name>Turing</last_name> </name> <profession>computer scientist</profession> <profession>mathematican</profession> <profession>cryptographer</profession> </person>

<person born=„1918“ died=„1988“> <name> <first_name>Richard</first_name> <middle_initial>M</middle_initial> <last_name>Feyman</last_name> </name> <profession>physicist</profession> <hobby>Playing the bongoes</hobby> </person></people>

Page 21: A technical introduction Felix Eickhoff felix.eickhoff@gmx.net XML Basics.

Stylesheet – Example<?xml version=„1.0“?><xsl:stylesheet version=„1.0“ xmlns:xsl=„http://www.w3.org/1999/XSL/Transform“> <xsl:template match=„people“> <html> <head><title>Famous Scientists</title></head> <body> <dl> <xls:apply-templates/> </dl> </body> </html> </xsl:template>

Page 22: A technical introduction Felix Eickhoff felix.eickhoff@gmx.net XML Basics.

Stylesheet – Example (2) <xsl:template match=„person“> <dt><xsl:apply-templates select=„name“/></dt> <dd><ul> <li>Born: <xsl:apply-templates select=„@born“/></li> <li>Died: <xsl:apply-templates select=„@died“/></li> </ul></dd> </xsl:template>

<xsl:template match=„name“> <xsl:value-of select=„last_name“/> <xsl:value-of select=„first_name“/> </xsl:template>

</xsl:stylesheet>

Page 23: A technical introduction Felix Eickhoff felix.eickhoff@gmx.net XML Basics.

Stylesheet – Example Output<html> <head> <title>Famous Scientists</title> </head> <body> <dl> <dt> Alan Turing </dt> <dd> <ul> <li>Born: 1912</li> <li>Died: 1954</li> </ul> </dd>

...

</dl> </body</html>

Page 24: A technical introduction Felix Eickhoff felix.eickhoff@gmx.net XML Basics.

XSL – More features

Uses XPath functionsUses XPath functions If-statements, For each loopsIf-statements, For each loops Parameters for templatesParameters for templates

=> Query language=> Query language

Page 25: A technical introduction Felix Eickhoff felix.eickhoff@gmx.net XML Basics.

XPath

Identifies particular parts of XML Identifies particular parts of XML documentsdocuments

Navigate on the tree structures of XML Navigate on the tree structures of XML documents like in a UNIX file systemdocuments like in a UNIX file system

Many built-in functionsMany built-in functions e.g.:round, starts-with, substring, ...e.g.:round, starts-with, substring, ...

Used by XSLT, XPointerUsed by XSLT, XPointer

Page 26: A technical introduction Felix Eickhoff felix.eickhoff@gmx.net XML Basics.

XPath – Example

b orn = "1 9 1 4 "d ied = "1 9 5 2 "

A lan

< firs t_ n am e> ...< /firs t_ n am e>

Tu rin g

< las t_ n am e> ...< /las t_ n am e>

< n am e> ...< /n am e>

C op m u ter S c ien tis t

< p ro fess ion > ...< /p ro fess ion >

< p erson > ...< /p erson >

S u b tree fo rn ext p erson

< p erson > ...< /p erson >

< p eop le> ...< /p eop le>

Th e roo t /

<xsl:template match=„people“> <xsl:apply-template select=„person“/></xsl:template>

<xsl:template match=„person“> <xsl:value-of select=„name“/></xsl:template>

Page 27: A technical introduction Felix Eickhoff felix.eickhoff@gmx.net XML Basics.

XPath – Example (2)

b orn = "1 9 1 4 "d ied = "1 9 5 2 "

A lan

< firs t_ n am e> ...< /firs t_ n am e>

Tu rin g

< las t_ n am e> ...< /las t_ n am e>

< n am e> ...< /n am e>

C op m u ter S c ien tis t

< p ro fess ion > ...< /p ro fess ion >

< p erson > ...< /p erson >

S u b tree fo rn ext p erson

< p erson > ...< /p erson >

< p eop le> ...< /p eop le>

Th e roo t /

<xsl:template match=„person“> <xsl:apply-templates select=„@*“/></xsl:template>

<xsl:template match=„last_name|profession“> <xsl:value-of select=„.“/></xsl:template>

Page 28: A technical introduction Felix Eickhoff felix.eickhoff@gmx.net XML Basics.

XPath – Example (3)

b orn = "1 9 1 4 "d ied = "1 9 5 2 "

A lan

< firs t_ n am e> ...< /firs t_ n am e>

Tu rin g

< las t_ n am e> ...< /las t_ n am e>

< n am e> ...< /n am e>

C op m u ter S c ien tis t

< p ro fess ion > ...< /p ro fess ion >

< p erson > ...< /p erson >

S u b tree fo rn ext p erson

< p erson > ...< /p erson >

< p eop le> ...< /p eop le>

Th e roo t /

/people/person/name/first_name//last_name/../first_name

<xsl:template match=„//profession[.=‚Computer Scientist‘]“><xsl:apply-template select=„//person[@born&lt;=1980“/>

Page 29: A technical introduction Felix Eickhoff felix.eickhoff@gmx.net XML Basics.

XLink

Simple LinksSimple Links Like Links in HTMLLike Links in HTML

Extended LinksExtended Links More than one target possibleMore than one target possible Directed labeled graphDirected labeled graph Representation undecided yetRepresentation undecided yet

ArcsArcs Links between other recourcesLinks between other recources

Page 30: A technical introduction Felix Eickhoff felix.eickhoff@gmx.net XML Basics.

XLink – Simple Link Example<?xml version=„1.0“?>

<novel xmlns:xlink=„http://www.w3.org/1999/xlink“ xlink:type=„simple“ xlink:href=„ftp://someserver.com/books/novels/wizoz.txt“ xlink:actuate=„onRequest“ xlink:show=„replace“ xlink:title=„A Link to the wonderful wizard ...“ xlink:role=„http://moreinfo.com“>

<title>The wonderful wizard of oz</title> <author>Frank Baum</author></novel>

Page 31: A technical introduction Felix Eickhoff felix.eickhoff@gmx.net XML Basics.

XLink – Extended Link Example<?xml version=„1.0“?>

<novel xmlns:xlink=„http://www.w3.org/1999/xlink“ xlink:type=„extended“> <title>The wonderful wizard of oz</title> <author>Frank Baum</author>

<edition xlink:type=„locator“ xlink:href=„urn:isbn:123456“ xlink:title=„William Morrow“ xlink:role=„http://www.williammorrow.com/“ xlink:label=„ISBN123456“/> <edition xlink:type=„locator“ xlink:href=„urn:isbn:234567“ xlink:title=„Oxford University Press“ xlink:role=„http://www.oup-usa.org/“ xlink:label=„ISBN234567“/>

</novel>

Page 32: A technical introduction Felix Eickhoff felix.eickhoff@gmx.net XML Basics.

XLink – Arcs Example<?xml version=„1.0“?><series xlink:type=„extended“ xmlns:xlink=„http://www.w3.org/1999/xlink“> <author>Frank Baum</author>

<!–- locator elements --> <novel xlink:type=„locator“ xlink:label=„oz1“ xlink:href=„ftp://someserver.com/wizoz.txt“> <title>The wonderful wizard of oz</title> </novel>

<novel xlink:type=„locator“ xlink:label=„oz2“ xlink:href=„ftp://someserver.com/ozland.txt“> <title>The marvelous land of oz</title> </novel>

<novel xlink:type=„locator“ xlink:label=„oz3“ xlink:href=„ftp://someserver.com/ooz.txt“> <title>Ozma of oz</title> </novel>

Page 33: A technical introduction Felix Eickhoff felix.eickhoff@gmx.net XML Basics.

XLink – Arcs Example (2)<!–- arcs --> <next xlink:type=„arc“ xlink:from=„oz1“ xlink:to=„oz2“ /> <next xlink:type=„arc“ xlink:from=„oz2“ xlink:to=„oz3“ /> <next xlink:type=„arc“ xlink:from=„oz2“ xlink:to=„oz1“ /> <next xlink:type=„arc“ xlink:from=„oz3“ xlink:to=„oz2“ />

</series>

The wonderfulworld of oz

The marvelousland of oz

Ozma ofoz

Page 34: A technical introduction Felix Eickhoff felix.eickhoff@gmx.net XML Basics.

XPointer

Locates points in XML documentsLocates points in XML documents Based on XPathBased on XPath

In XLinks:http://www.someserver.com/xml/people.xml#xpointer (//name[position()=1])

xpointer(/) to the rootxpointer(//first_name)Xpointer(//profession[.=„physicist“])

Page 35: A technical introduction Felix Eickhoff felix.eickhoff@gmx.net XML Basics.

References

XML in a NutshellXML in a NutshellElliotte Rusty Harold & W. Scott MeansElliotte Rusty Harold & W. Scott MeansO‘ReillyO‘Reilly

Professional XML DatabasesProfessional XML DatabasesKevin WilliamsKevin WilliamsWROXWROX

http://xml.coverpages.orghttp://xml.coverpages.org