9. Arkusz DTD umieszczony wewnątrz dokumentu XML.
<?xml version="1.0" encoding="iso-8859-2" standalone="no"?>
<!DOCTYPE pracownik [
<!ELEMENT pracownik (osoba*)>
<!ELEMENT osoba (imie,nazwisko,profesja*)>
<!ELEMENT imie (#PCDATA)>
<!ELEMENT nazwisko (#PCDATA)>
<!ELEMENT profesja (#PCDATA)>
]>
<pracownik>
<osoba>
<imie>Alan</imie>
<nazwisko>Starski</nazwisko>
<profesja>operator</profesja>
<profesja>scenarzysta</profesja>
</osoba>
<osoba>
<imie>Janko</imie>
<nazwisko>Muzykant</nazwisko>
<profesja>muzyk</profesja>
<profesja>pasterz</profesja>
</osoba>
</pracownik>
Przykład 9: Arkusz DTD umieszczony wewnątrz dokumentu XML.
10. Program walidujący poprawność dokumentu.
<?php
$dom = new DOMDocument();
$dom->load('osoba.xml');
if ($dom->validate()) {echo 'Walidacja dokumentu jest poprawna';}
else {echo 'Walidacja dokumentu jest błędna';}
?>
Przykład 10: Program walidujący poprawność dokumentu.
11. Deklaracje w elemencie DTD.
<?xml version="1.0" encoding="iso-8859-2" standalone="no"?>
<!DOCTYPE pracownik [ <!-- To jest deklaracja typu -->
<!ELEMENT pracownik (osoba)> <!-- To jest deklaracja elementu -->
<!-- Każdy element musi być zadeklarowany,-->
<!-- deklaracja składa się z nazwy elementu i modelu zawartości. -->
<!-- Model zawartości określa jakie elementy może -->
<!-- lub musi zawierać element potomny -->
<!ELEMENT osoba (imie,nazwisko,profesja)>
<!ELEMENT imie (#PCDATA)>
<!-- Najprostszym modelem zawartości jest #PCDATA. ->
<!-- Oznacza to że element nie ma elementów potomnych czyli jest znakowy --
>
<!ELEMENT nazwisko (#PCDATA)>
<!ELEMENT profesja (#PCDATA)>
]>
<pracownik>
<osoba>
<imie>Alan</imie>
<nazwisko>Starski</nazwisko>
<profesja>operator</profesja>
</osoba>
</pracownik>
Przykład 11: Deklaracje w elemencie DTD.
12. Elementy potomne.
<?xml version="1.0" encoding="iso-8859-2" standalone="no"?>
<!DOCTYPE pracownik [
<!ELEMENT pracownik (osoba)>
<!-- -->
<!ELEMENT osoba (imie,nazwisko,profesja*)>
<!ELEMENT imie (#PCDATA)>
<!ELEMENT nazwisko (#PCDATA)>
<!ELEMENT profesja (#PCDATA)>
]>
<pracownik>
<osoba>
<imie>Alan</imie>
<nazwisko>Starski</nazwisko>
<profesja>operator</profesja>
<profesja>scenarzysta</profesja>
</osoba>
<osoba>
<imie>Janko</imie>
<nazwisko>Muzykant</nazwisko>
<profesja>muzyk</profesja>
<profesja>pasterz</profesja>
</osoba>
</pracownik>
Przykład 12: Elementy potomne.
13. Deklaracja w dokumencie DTD typu standalone.
<?xml version="1.0" encoding="iso-8859-2" standalone="yes"?>
<!DOCTYPE pracownik SYSTEM "pracownik.dtd">
<pracownik>
<osoba>
<imie>Alan</imie>
<nazwisko>Starski</nazwisko>
<profesja>operator</profesja>
<profesja>scenarzysta</profesja>
</osoba>
<osoba>
<imie>Janko</imie>
<nazwisko>Muzykant</nazwisko>
<profesja>muzyk</profesja>
<profesja>pasterz</profesja>
</osoba>
</pracownik>
Przykład 13: Deklaracja w dokumencie DTD typu standalone.
14. Arkusz DTD standalone.
<!ELEMENT pracownik (osoba*)>
<!ELEMENT osoba (imie,nazwisko,profesja*)>
<!ELEMENT imie (#PCDATA)>
<!ELEMENT nazwisko (#PCDATA)>
<!ELEMENT profesja (#PCDATA)>
Przykład 14: Arkusz DTD standalone.
15. Wybór elementu warunkowego.
<?xml version="1.0" encoding="iso-8859-2" standalone="no"?>
<!DOCTYPE klient [
<!ELEMENT klient (nazwa*)>
<!ELEMENT nazwa (firma|czlowiek)>
<!ELEMENT firma (nazwa_firmy,nip)>
<!ELEMENT nazwa_firmy (#PCDATA)>
<!ELEMENT nip (#PCDATA)>
<!ELEMENT czlowiek (imie,nazwisko)>
<!ELEMENT nazwisko (#PCDATA)>
]>
<klient>
<nazwa>
<firma>
<nazwa_firmy>Wedel SA</nazwa_firmy>
<nip>12345678</nip>
</firma>
</nazwa>
<nazwa>
<czlowiek>
<imie>Jan</imie>
<nazwisko>Kowalski</nazwisko>
</czlowiek>
</nazwa>
</klient>
Przykład 15: Wybór elementu warunkowego.
16. Atrybuty w dokumencie XML.
<?xml version="1.0" encoding="iso-8859-2" standalone="no"?>
<!DOCTYPE magazyn [
<!ELEMENT magazyn (pozycja*)>
<!ELEMENT pozycja (#PCDATA)>
<!ATTLIST pozycja
cena_zakupu
CDATA #REQUIRED
cena_detal
CDATA #REQUIRED
cena_min
CDATA #IMPLIED
>
]>
<magazyn>
<pozycja cena_zakupu= "23.00zł" cena_detal= "30.00zł" cena_min=
"25.00zł">Marchew</pozycja>
<pozycja cena_zakupu= "23.00zł" cena_detal= "30.00zł" cena_min=
"25.00zł">Kartofle</pozycja>
<pozycja cena_zakupu= "23.00zł" cena_detal= "30.00zł" cena_min=
"25.00zł">Sałata</pozycja>
</magazyn>
<!-- Wszystkie trzy atrybuty mają postać XX.YYzł --> Przykład 16: Atrybuty w dokumencie XML.
17. Projekt dokumentu order.xml.
<?xml version="1.0" encoding="iso-8859-2" standalone="no"?>
<!DOCTYPE DOKUMENT [
<!ELEMENT DOKUMENT (KLIENT)*>
<!ELEMENT KLIENT (IMIENAZWISKO,DATA,ZAMOWIENIA)>
<!ELEMENT IMIENAZWISKO (NAZWISKO,IMIE)>
<!ELEMENT NAZWISKO (#PCDATA)>
<!ELEMENT IMIE (#PCDATA)>
<!ELEMENT DATA (#PCDATA)>
<!ELEMENT ZAMOWIENIA (POZYCJA)*>
<!ELEMENT POZYCJA (PRODUKT,ILOSC,CENA)>
<!ELEMENT PRODUKT (#PCDATA)>
<!ELEMENT ILOSC (#PCDATA)>
<!ELEMENT CENA (#PCDATA)>
]>
<DOKUMENT>
<KLIENT>
<IMIENAZWISKO>
<NAZWISKO>Smith</NAZWISKO>
<IMIE>Sam</IMIE>
</IMIENAZWISKO>
<DATA>15 października 2001</DATA>
<ZAMOWIENIA>
<POZYCJA>
<PRODUKT>Pomidory</PRODUKT>
<ILOSC>8</ILOSC>
<CENA>5zł</CENA>
</POZYCJA>
<POZYCJA>
<PRODUKT>Pomarańcze</PRODUKT>
<ILOSC>24</ILOSC>
<CENA>9.98zł</CENA>
</POZYCJA>
</ZAMOWIENIA>
</KLIENT>
<KLIENT>
<IMIENAZWISKO>
<NAZWISKO>Jones</NAZWISKO>
<IMIE>Polly</IMIE>
</IMIENAZWISKO>
<DATA>20 października 2001</DATA>
<ZAMOWIENIA>
<POZYCJA>
<PRODUKT>Chleb</PRODUKT>
<ILOSC>12</ILOSC>
<CENA>28.80zł</CENA>
</POZYCJA>
<POZYCJA>
<PRODUKT>Jabłka</PRODUKT>
<ILOSC>6</ILOSC>
<CENA>6.00zł</CENA>
</POZYCJA>
</ZAMOWIENIA>
</KLIENT>
<KLIENT>
<IMIENAZWISKO>
<NAZWISKO>Weber</NAZWISKO>
<IMIE>Bill</IMIE>
</IMIENAZWISKO>
<DATA>25 października 2001</DATA>
<ZAMOWIENIA>
<PRODUKT>Asparagus</PRODUKT>
<ILOSC>12</ILOSC>
<CENA>11.90zł</CENA>
</POZYCJA>
<POZYCJA>
<PRODUKT>Sałata</PRODUKT>
<ILOSC>6</ILOSC>
<CENA>31.50zł</CENA>
</POZYCJA>
</ZAMOWIENIA>
</KLIENT>
</DOKUMENT>
Przykład 17: Atrybuty w dokumencie XML.
18. Arkusz stylu order.xsl.
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<body>
<h2>Zamówienia naszej firmy</h2>
<xsl:for-each select="DOKUMENT/KLIENT">
<p><xsl:value-of select="IMIENAZWISKO/NAZWISKO"/>
<xsl:value-of select="IMIENAZWISKO/IMIE"/>
<xsl:value-of select="DATA"/>
<xsl:value-of select="ZAMOWIENIA/POZYCJA/PRODUKT"/>
</p>
</xsl:for-each>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Przykład 18: Arkusz stylu order.xsl.
19. Zmodyfikowany dokument order.xml.
<?xml version="1.0" encoding="iso-8859-2" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="order1.xsl"?>
<!DOCTYPE DOKUMENT [
<!ELEMENT DOKUMENT (KLIENT)*>
<!ELEMENT KLIENT (IMIENAZWISKO,DATA,ZAMOWIENIA)>
<!ELEMENT IMIENAZWISKO (NAZWISKO,IMIE)>
<!ELEMENT NAZWISKO (#PCDATA)>
<!ELEMENT IMIE (#PCDATA)>
<!ELEMENT DATA (#PCDATA)>
<!ELEMENT ZAMOWIENIA (POZYCJA)*>
<!ELEMENT POZYCJA (PRODUKT,ILOSC,CENA)>
<!ELEMENT PRODUKT (#PCDATA)>
<!ELEMENT ILOSC (#PCDATA)>
<!ELEMENT CENA (#PCDATA)>
]>
<DOKUMENT>
<KLIENT>
<IMIENAZWISKO>
<NAZWISKO>Smith</NAZWISKO>
<IMIE>Sam</IMIE>
</IMIENAZWISKO>
<DATA>15 października 2001</DATA>
<ZAMOWIENIA>
<POZYCJA>
<PRODUKT>Pomidory</PRODUKT>
<ILOSC>8</ILOSC>
<CENA>5zł</CENA>
</POZYCJA>
<POZYCJA>
<PRODUKT>Pomarańcze</PRODUKT>
<ILOSC>24</ILOSC>
<CENA>9.98zł</CENA>
</POZYCJA>
</ZAMOWIENIA>
</KLIENT>
<KLIENT>
<IMIENAZWISKO>
<NAZWISKO>Jones</NAZWISKO>
<IMIE>Polly</IMIE>
</IMIENAZWISKO>
<DATA>20 października 2001</DATA>
<ZAMOWIENIA>
<POZYCJA>
<PRODUKT>Chleb</PRODUKT>
<ILOSC>12</ILOSC>
<CENA>28.80zł</CENA>
</POZYCJA>
<POZYCJA>
<PRODUKT>Jabłka</PRODUKT>
<ILOSC>6</ILOSC>
<CENA>6.00zł</CENA>
</POZYCJA>
</ZAMOWIENIA>
</KLIENT>
<KLIENT>
<IMIENAZWISKO>
<NAZWISKO>Weber</NAZWISKO>
<IMIE>Bill</IMIE>
</IMIENAZWISKO>
<DATA>25 października 2001</DATA>
<ZAMOWIENIA>
<POZYCJA>
<PRODUKT>Asparagus</PRODUKT>
<ILOSC>12</ILOSC>
<CENA>11.90zł</CENA>
<POZYCJA>
<PRODUKT>Sałata</PRODUKT>
<ILOSC>6</ILOSC>
<CENA>31.50zł</CENA>
</POZYCJA>
</ZAMOWIENIA>
</KLIENT>
</DOKUMENT>
Przykład 19: Zmodyfikowany dokument order.xml.