xml extensible markup language 3 -...

37
XML eXtensible Markup Language 3

Upload: trankhanh

Post on 28-Feb-2019

232 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: XML eXtensible Markup Language 3 - merlin.fic.uni.lodz.plmerlin.fic.uni.lodz.pl/MSkulimowski/xml/xml_3.pdf · inny format XML, ale również na HTML, PDF i inne. dokument XML arkusz

XML – eXtensible Markup Language 3

Page 2: XML eXtensible Markup Language 3 - merlin.fic.uni.lodz.plmerlin.fic.uni.lodz.pl/MSkulimowski/xml/xml_3.pdf · inny format XML, ale również na HTML, PDF i inne. dokument XML arkusz

XSL transformations (XSLT)

XSLT (ang. eXtensible Stylesheet Language Transformations) jest opartym na XML językiem transformacji dokumentów XML

XSLT umożliwia przetłumaczenie dokumentów z jednego formatu XML na inny format XML, ale również na HTML, PDF i inne.

dokument XML

arkusz XSLT

plik wyjściowy

(XML, HTML, PDF etc.)

procesor XSLT

Arkusze XSLT określają w jaki sposób przekształcić poszczególne elementy wejściowe pliku XML.

Page 3: XML eXtensible Markup Language 3 - merlin.fic.uni.lodz.plmerlin.fic.uni.lodz.pl/MSkulimowski/xml/xml_3.pdf · inny format XML, ale również na HTML, PDF i inne. dokument XML arkusz

XSLT i przeglądarki

Page 4: XML eXtensible Markup Language 3 - merlin.fic.uni.lodz.plmerlin.fic.uni.lodz.pl/MSkulimowski/xml/xml_3.pdf · inny format XML, ale również na HTML, PDF i inne. dokument XML arkusz

<?xml version="1.0"?>

<xsl:stylesheet version="1.0"

xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

INSTRUKCJE OKREŚLAJĄCE PRZEKSZTAŁCENIA ELEMENTÓW

</xsl:stylesheet>

Struktura XSLT

Arkusz XSLT ma następującą strukturę

W dokumencie XML, który ma być przekształcamy umieszczamy

<?xml-stylesheet type="application/xml" href="people.xsl"?>

Zapisujemy go w pliku z rozszerzeniem xsl np. people.xsl.

Page 5: XML eXtensible Markup Language 3 - merlin.fic.uni.lodz.plmerlin.fic.uni.lodz.pl/MSkulimowski/xml/xml_3.pdf · inny format XML, ale również na HTML, PDF i inne. dokument XML arkusz

<?xml version="1.0"?>

<?xml-stylesheet type="application/xml" href="people.xsl"?>

<people>

<person born="1912" died="1954">

<name>

<first_name>Alan</first_name>

<last_name>Turing</last_name>

</name>

<profession>computer scientist</profession>

<profession>mathematician</profession>

<profession>cryptographer</profession>

</person>

<person born="1918" died="1988">

<name>

<first_name>Richard</first_name>

<last_name>Feynman</last_name>

</name>

<profession>physicist</profession>

</person>

</people>

Dołączenie XSLT

Rozważmy następujący dokument XML

Page 6: XML eXtensible Markup Language 3 - merlin.fic.uni.lodz.plmerlin.fic.uni.lodz.pl/MSkulimowski/xml/xml_3.pdf · inny format XML, ale również na HTML, PDF i inne. dokument XML arkusz

xsl:template

Przykład 1

<?xml version="1.0"?>

<xsl:stylesheet version="1.0"

xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

</xsl:stylesheet>

Wynik:

AlanTuringcomputer scientistmathematiciancryptographerRichardFeynmanphysicist

Jeżeli chcemy dokonać transformacji wybranego elementu z dokumentu XML musimy się do niego odwołać w arkuszu XSL:

<xsl:template match="element">

</xsl:template>

Page 7: XML eXtensible Markup Language 3 - merlin.fic.uni.lodz.plmerlin.fic.uni.lodz.pl/MSkulimowski/xml/xml_3.pdf · inny format XML, ale również na HTML, PDF i inne. dokument XML arkusz

Przykład 2

<?xml version="1.0"?>

<xsl:stylesheet version="1.0"

xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="person">A Person</xsl:template>

</xsl:stylesheet>

Wynik:

A PersonA Person

W dokumencie wejściowym są dwa elementy person.

Procesor napotykając te elementy zamienia je na A Person.

xsl:template

Page 8: XML eXtensible Markup Language 3 - merlin.fic.uni.lodz.plmerlin.fic.uni.lodz.pl/MSkulimowski/xml/xml_3.pdf · inny format XML, ale również na HTML, PDF i inne. dokument XML arkusz

Przykład 3

<?xml version="1.0"?>

<xsl:stylesheet version="1.0"

xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="person"><p>A Person</p></xsl:template>

</xsl:stylesheet>

Wynik A Person A Person

W dokumencie wejściowym są dwa elementy person.

Procesor napotykając te elementy zamienia je na A Person umieszczone w oddzielnych akapitach.

xsl:template

Page 9: XML eXtensible Markup Language 3 - merlin.fic.uni.lodz.plmerlin.fic.uni.lodz.pl/MSkulimowski/xml/xml_3.pdf · inny format XML, ale również na HTML, PDF i inne. dokument XML arkusz

XSLT

Przykład 4

<?xml version="1.0"?>

<xsl:stylesheet version="1.0"

xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="person"><p>A Person</xsl:template>

</xsl:stylesheet>

Arkusz XSLT musi być (jako dokument XML) poprawny składniowo (ang. well formed).

Poniższy arkusz XML nie jest poprawny składniowo.

Musi zatem spełniać wszystkie wymagania związane z poprawnością składniową.

Page 10: XML eXtensible Markup Language 3 - merlin.fic.uni.lodz.plmerlin.fic.uni.lodz.pl/MSkulimowski/xml/xml_3.pdf · inny format XML, ale również na HTML, PDF i inne. dokument XML arkusz

xsl:value-of

Jeżeli chcemy wybrać z wejściowego dokumentu XML pewien element w arkuszu XSLT stosujemy element:

<xsl:value-of select="element"/>

Przykład 5

<?xml version="1.0"?>

<xsl:stylesheet version="1.0"

xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="person">

<xsl:value-of select="name"/>

</xsl:template>

</xsl:stylesheet>

Page 11: XML eXtensible Markup Language 3 - merlin.fic.uni.lodz.plmerlin.fic.uni.lodz.pl/MSkulimowski/xml/xml_3.pdf · inny format XML, ale również na HTML, PDF i inne. dokument XML arkusz

Wynik

Alan Turing

Richard Feynman

Procesor napotykając elementy person pobiera z nich wartości elementów name i umieszcza w oddzielnych akapitach.

Procesor XSLT przechodzi przez elementy dokumentu XML metodą PREORDER.

Atrybutem match elementu template są węzły przetwarzanego

dokumentu XML.

Z wyselekcjonowanych w ten sposób węzłów już można pobrać (i wstawić do wyniku) dane, można je także skierować do dalszego przetwarzania, poprzez umieszczenie dyrektywy xsl:apply-templates.

xsl:apply-templates

Page 12: XML eXtensible Markup Language 3 - merlin.fic.uni.lodz.plmerlin.fic.uni.lodz.pl/MSkulimowski/xml/xml_3.pdf · inny format XML, ale również na HTML, PDF i inne. dokument XML arkusz

Przykład 6

<?xml version="1.0"?>

<xsl:stylesheet version="1.0"

xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="name">

<xsl:value-of select="last_name"/>

<xsl:value-of select="first_name"/>

</xsl:template>

</xsl:stylesheet>

W poniższym przykładzie wybieramy wartości elementów last_name i first_name będących dziećmi elementu name.

Zauważmy, że procesor najpierw przetwarza nazwisko a później imię.

xsl:value-of

Page 13: XML eXtensible Markup Language 3 - merlin.fic.uni.lodz.plmerlin.fic.uni.lodz.pl/MSkulimowski/xml/xml_3.pdf · inny format XML, ale również na HTML, PDF i inne. dokument XML arkusz

Wynik:

TuringAlancomputer scientistmathematiciancryptographer FeynmanRichardphysicist

Modyfikacja:

<?xml version="1.0"?>

<xsl:stylesheet version="1.0"

xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="name">

</xsl:template>

</xsl:stylesheet>

xsl:value-of

Page 14: XML eXtensible Markup Language 3 - merlin.fic.uni.lodz.plmerlin.fic.uni.lodz.pl/MSkulimowski/xml/xml_3.pdf · inny format XML, ale również na HTML, PDF i inne. dokument XML arkusz

Wynik:

computer scientist mathematician cryptographer physicist

xsl:value-of

Jeżeli chcemy aby w dokumencie wynikowym były tylko wartości elementów last_name i first_name musimy wyraźnie to zapisać…

…tzn. musimy zapisać, że procesor ma przetwarzać element name.

Page 15: XML eXtensible Markup Language 3 - merlin.fic.uni.lodz.plmerlin.fic.uni.lodz.pl/MSkulimowski/xml/xml_3.pdf · inny format XML, ale również na HTML, PDF i inne. dokument XML arkusz

Przykład 7

<?xml version="1.0"?>

<xsl:stylesheet version="1.0"

xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="name">

<xsl:value-of select="last_name"/>

<xsl:value-of select="first_name"/>

</xsl:template>

<xsl:template match="person">

<xsl:apply-templates select="name"/>

</xsl:template>

</xsl:stylesheet>

W tym miejscu rozpoczyna się przetwarzanie elementu name.

Procesor zaczyna szukać elementu template z wartością match="name".

xsl:apply-templates

Page 16: XML eXtensible Markup Language 3 - merlin.fic.uni.lodz.plmerlin.fic.uni.lodz.pl/MSkulimowski/xml/xml_3.pdf · inny format XML, ale również na HTML, PDF i inne. dokument XML arkusz

XSLT

Wynik:

TuringAlan FeynmanRichard

Kolejność elementów w arkuszu XSLT nie ma znaczenia.

Ważna jest tylko kolejność elementów w dokumencie XML.

Załóżmy teraz, że chcemy zawartość elementu people umieścić w

dokumencie HTML o tytule Famous Scientists.

Musimy zatem w odpowiednim miejscu umieścić instrukcję przetwarzania dzieci korzenia (people)

Page 17: XML eXtensible Markup Language 3 - merlin.fic.uni.lodz.plmerlin.fic.uni.lodz.pl/MSkulimowski/xml/xml_3.pdf · inny format XML, ale również na HTML, PDF i inne. dokument XML arkusz

<?xml version="1.0"?>

<?xml-stylesheet type="application/xml" href="people.xsl"?>

<people>

<person born="1912" died="1954">

<name>

<first_name>Alan</first_name>

<last_name>Turing</last_name>

</name>

<profession>computer scientist</profession>

<profession>mathematician</profession>

<profession>cryptographer</profession>

</person>

<person born="1918" died="1988">

<name>

<first_name>Richard</first_name>

<last_name>Feynman</last_name>

</name>

<profession>physicist</profession>

</person>

</people>

XSLT

Rozważamy następujący dokument XML:

Page 18: XML eXtensible Markup Language 3 - merlin.fic.uni.lodz.plmerlin.fic.uni.lodz.pl/MSkulimowski/xml/xml_3.pdf · inny format XML, ale również na HTML, PDF i inne. dokument XML arkusz

XSLT

Przykład 8

<?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>

<xsl:apply-templates select="person"/>

</body>

</html>

</xsl:template>

Page 19: XML eXtensible Markup Language 3 - merlin.fic.uni.lodz.plmerlin.fic.uni.lodz.pl/MSkulimowski/xml/xml_3.pdf · inny format XML, ale również na HTML, PDF i inne. dokument XML arkusz

XSLT

<xsl:template match="name">

<p>

<xsl:value-of select="last_name"/>

<xsl:value-of select="first_name"/>

</p>

</xsl:template>

<xsl:template match="person">

<xsl:apply-templates select="name"/>

</xsl:template>

</xsl:stylesheet>

Przykład 8 cd

Page 20: XML eXtensible Markup Language 3 - merlin.fic.uni.lodz.plmerlin.fic.uni.lodz.pl/MSkulimowski/xml/xml_3.pdf · inny format XML, ale również na HTML, PDF i inne. dokument XML arkusz

XSLT - atrybuty

W arkuszach XSLT możemy transformować nie tylko wartości elementów.

Możliwe jest także odwoływanie się do atrybutów.

Wykorzystujemy w tym celu element:

<xsl:template match="@nazwa_atrybutu">

</xsl:template>

Jeżeli chcemy odwołać się do wszystkich atrybutów jako nazwe_atrybutu podajemy *:

<xsl:template match="@*">

</xsl:template>

Page 21: XML eXtensible Markup Language 3 - merlin.fic.uni.lodz.plmerlin.fic.uni.lodz.pl/MSkulimowski/xml/xml_3.pdf · inny format XML, ale również na HTML, PDF i inne. dokument XML arkusz

Przykład 9

<?xml version="1.0"?>

<xsl:stylesheet version="1.0"

xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="person">

<p>

<xsl:apply-templates select="name"/>

<br/>Born: <xsl:apply-templates select="@born"/>

</p>

</xsl:template>

</xsl:stylesheet>

Element

<xsl:apply-templates select="@born"/>

„zwraca” wartość atrybutu born.

XSLT - atrybuty

Page 22: XML eXtensible Markup Language 3 - merlin.fic.uni.lodz.plmerlin.fic.uni.lodz.pl/MSkulimowski/xml/xml_3.pdf · inny format XML, ale również na HTML, PDF i inne. dokument XML arkusz

XSLT

Wynik:

AlanTuring Born: 1912

RichardFeynman

Born: 1918

Jeżeli chcemy odwołać się do dowolnego elementu w dokumencie XML w arkuszu XSLT stosujemy element

<xsl:template match="*|/">

<xsl:apply-templates/>

</xsl:template>

* - dowolny element, / - korzeń, | - alternatywa.

Powyższy element spowoduje, że procesor dotrze do wszystkich elementów i korzenia z wyjątkiem atrybutów i elementów z przestrzeni nazw które nie są dziećmi swoich rodziców.

Page 23: XML eXtensible Markup Language 3 - merlin.fic.uni.lodz.plmerlin.fic.uni.lodz.pl/MSkulimowski/xml/xml_3.pdf · inny format XML, ale również na HTML, PDF i inne. dokument XML arkusz

XSLT – przestrzenie nazw

Dodajmy do rozważanego przykładu przestrzeń nazw:

<?xml version="1.0"?>

<?xml-stylesheet type="application/xml" href="people.xsl"?>

<people xmlns="http://www.cafeconleche.org/namespaces/people">

<person born="1912" died="1954">

<name>

<first_name>Alan</first_name>

<last_name>Turing</last_name>

</name>

<profession>computer scientist</profession>

<profession>mathematician</profession>

<profession>cryptographer</profession>

</person>

<person born="1918" died="1988">

<name>

<first_name>Richard</first_name>

<last_name>Feynman</last_name>

</name>

<profession>physicist</profession>

</person>

</people>

Page 24: XML eXtensible Markup Language 3 - merlin.fic.uni.lodz.plmerlin.fic.uni.lodz.pl/MSkulimowski/xml/xml_3.pdf · inny format XML, ale również na HTML, PDF i inne. dokument XML arkusz

Rozważane wcześniej arkusze XSLT nie mają zastosowania do tak zmodyfikowanego dokumentu XML.

Informację o przestrzeni nazw musimy dodać do arkusza XSLT.

<?xml version="1.0"?>

<xsl:stylesheet version="1.0"

xmlns:xsl="http://www.w3.org/1999/XSL/Transform"

xmlns:pe="http://www.cafeconleche.org/namespaces/people">

...

</xsl:stylesheet>

Ponadto do elementów w dokumencie XML pochodzących z tej przestrzeni nazw musimy odwoływać się za pomocą zdefiniowanych prefixów.

XSLT – przestrzenie nazw

Page 25: XML eXtensible Markup Language 3 - merlin.fic.uni.lodz.plmerlin.fic.uni.lodz.pl/MSkulimowski/xml/xml_3.pdf · inny format XML, ale również na HTML, PDF i inne. dokument XML arkusz

Przykład 10 <?xml version="1.0"?>

<xsl:stylesheet version="1.0"

xmlns:xsl="http://www.w3.org/1999/XSL/Transform"

xmlns:pe="http://www.cafeconleche.org/namespaces/people">

<xsl:template match="pe:people">

<html>

<head>

<title>Famous Scientists</title>

</head>

<body>

<xsl:apply-templates/>

</body>

</html>

</xsl:template>

<xsl:template match="pe:name">

<p>

<xsl:value-of select="pe:last_name"/>

<xsl:value-of select="pe:first_name"/>

</p>

</xsl:template>

<xsl:template match="pe:person">

<xsl:apply-templates select="pe:name"/>

</xsl:template>

</xsl:stylesheet>

XSLT – przestrzenie nazw

Page 26: XML eXtensible Markup Language 3 - merlin.fic.uni.lodz.plmerlin.fic.uni.lodz.pl/MSkulimowski/xml/xml_3.pdf · inny format XML, ale również na HTML, PDF i inne. dokument XML arkusz

xsl:for-each

Arkusze XSLT umożliwiają iteracyjne przeglądanie elementów dokumentu XML

Wykorzystujemy w tym celu element:

<xsl:for-each select="nazwa_elementu">

</xsl:for-each>

Przykład 11

<xsl:template match="people">

<xsl:for-each select="person">

<xsl:value-of select="name"/>

<xsl:value-of select="@born"/>

</xsl:for-each>

</xsl:template>

Wynik:

Alan Turing 1912 Richard Feynman 1918

Page 27: XML eXtensible Markup Language 3 - merlin.fic.uni.lodz.plmerlin.fic.uni.lodz.pl/MSkulimowski/xml/xml_3.pdf · inny format XML, ale również na HTML, PDF i inne. dokument XML arkusz

Modyfikacja:

<xsl:template match="people">

<table border="1">

<tr><td>Name</td><td>Born</td></tr>

<xsl:for-each select="person">

<tr>

<td><xsl:value-of select="name"/></td>

<td><xsl:value-of select="@born"/></td>

</tr>

</xsl:for-each>

</table>

</xsl:template>

Wynik:

xsl:for-each

Page 28: XML eXtensible Markup Language 3 - merlin.fic.uni.lodz.plmerlin.fic.uni.lodz.pl/MSkulimowski/xml/xml_3.pdf · inny format XML, ale również na HTML, PDF i inne. dokument XML arkusz

Arkusze XSLT umożliwiają testowanie zawartości elementów dokumentu XML

Wykorzystujemy w tym celu element:

<xsl:if test="warunek">

</xsl:if>

Przykład 12 <xsl:template match="people">

<xsl:for-each select="person">

<xsl:value-of select="name"/>

<xsl:if test="@born=‘1912’">

died in <xsl:value-of select="@died"/>

</xsl:if>

</xsl:for-each>

</xsl:template>

Wynik:

Alan Turing died in 1954 Richard Feynman

xsl:if

Page 29: XML eXtensible Markup Language 3 - merlin.fic.uni.lodz.plmerlin.fic.uni.lodz.pl/MSkulimowski/xml/xml_3.pdf · inny format XML, ale również na HTML, PDF i inne. dokument XML arkusz

Arkusze XSLT umożliwiają przetwarzanie warunkowe zawartości dokumentu XML.

Wykorzystujemy w tym celu element:

<xsl:choose>

<xsl:when test="warunek">

. . .

</xsl:when>

<xsl:otherwise>

. . .

</xsl:otherwise>

</xsl:choose>

xsl:choose

Page 30: XML eXtensible Markup Language 3 - merlin.fic.uni.lodz.plmerlin.fic.uni.lodz.pl/MSkulimowski/xml/xml_3.pdf · inny format XML, ale również na HTML, PDF i inne. dokument XML arkusz

Wynik:

Przykład 13

<xsl:template match="people">

<xsl:for-each select="person">

<p>

<xsl:value-of select="name"/>

<xsl:choose>

<xsl:when test="@died=‘1912’">

died in 1912

</xsl:when>

<xsl:otherwise>

did not die in 1912

</xsl:otherwise>

</xsl:choose>

</p>

</xsl:for-each>

</xsl:template>

Alan Turing died in 1954 Richard Feynman did not die in 1954

xsl:choose

Page 31: XML eXtensible Markup Language 3 - merlin.fic.uni.lodz.plmerlin.fic.uni.lodz.pl/MSkulimowski/xml/xml_3.pdf · inny format XML, ale również na HTML, PDF i inne. dokument XML arkusz

Arkusze XSLT umożliwiają sortowanie zawartości dokumentu XML.

Wykorzystujemy w tym celu element:

<xsl:sort selection="element">

. . .

</xsl:sort>

Sortowanie ograniczone jest do elementów:

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

<xsl:for-each>. . .</xsl:for-each>

xsl:sort

Page 32: XML eXtensible Markup Language 3 - merlin.fic.uni.lodz.plmerlin.fic.uni.lodz.pl/MSkulimowski/xml/xml_3.pdf · inny format XML, ale również na HTML, PDF i inne. dokument XML arkusz

Wynik:

Przykład 14

<xsl:template match="people">

<xsl:apply-templates>

<xsl:sort select="name"/>

</xsl:apply-templates>

</xsl:template>

Alan Turing computer scientist mathematician cryptographer Richard Feynman physicist

Wynik:

<xsl:template match="people">

<xsl:apply-templates>

<xsl:sort select="name" order="descending"/>

</xsl:apply-templates>

</xsl:template>

Richard Feynman physicist Alan Turing computer scientist mathematician cryptographer

xsl:sort

Page 33: XML eXtensible Markup Language 3 - merlin.fic.uni.lodz.plmerlin.fic.uni.lodz.pl/MSkulimowski/xml/xml_3.pdf · inny format XML, ale również na HTML, PDF i inne. dokument XML arkusz

XPath

XPath to język służący do adresowania części dokumentu XML.

Dzięki XPath potrafimy odwoływać się do różnych elementów dokumentu XML.

Rozważmy przykładowy dokument XML dla którego zapiszemy przykładowe adresowania.

Page 34: XML eXtensible Markup Language 3 - merlin.fic.uni.lodz.plmerlin.fic.uni.lodz.pl/MSkulimowski/xml/xml_3.pdf · inny format XML, ale również na HTML, PDF i inne. dokument XML arkusz

<?xml version="1.0"?>

<?xml-stylesheet type="application/xml" href="people.xsl"?>

<people>

<person born="1912" died="1954">

<name>

<first_name>Alan</first_name>

<last_name>Turing</last_name>

</name>

<profession>computer scientist</profession>

<profession>mathematician</profession>

</person>

<person born="1918" died="1988">

<name>

<first_name>Richard</first_name>

<last_name>Feynman</last_name>

</name>

<profession>physicist</profession>

</person>

</people>

XPath

Page 35: XML eXtensible Markup Language 3 - merlin.fic.uni.lodz.plmerlin.fic.uni.lodz.pl/MSkulimowski/xml/xml_3.pdf · inny format XML, ale również na HTML, PDF i inne. dokument XML arkusz

XPath

1. Wszystkie elementy person będące dziećmi elementu people

Przykładowe adresowania:

/people/person

2. Wszystkie elementy person znajdujące się w dokumencie

//person

Ogólnie

/t1/t2/t3/…/tn

W przypadku rozważanego dokumentu XML wyniki powyższych adresowań będą identyczne.

Page 36: XML eXtensible Markup Language 3 - merlin.fic.uni.lodz.plmerlin.fic.uni.lodz.pl/MSkulimowski/xml/xml_3.pdf · inny format XML, ale również na HTML, PDF i inne. dokument XML arkusz

XPath

3. Atrybut @born znajdujący się w elemencie person

/person/@born

4. Atrybut @born znajdujący się w elemencie person i mający wartość "1912"

/person/@born="1912"

5. Wszystkie osoby urodzone w roku "1912"

//person[@born="1912"]

6. Pierwszy element person z dokumentu XML

//person[1]

Page 37: XML eXtensible Markup Language 3 - merlin.fic.uni.lodz.plmerlin.fic.uni.lodz.pl/MSkulimowski/xml/xml_3.pdf · inny format XML, ale również na HTML, PDF i inne. dokument XML arkusz

7. Ostatnia profesja (profession) z pierwszego elementu person

//person[1]/profession[last()]

XPath

8. Wszystkie elementy person nie posiadające daty urodzenia

//person[not @born]