Příklady vytváření xml dokumentů s popisem dtd. DTD - Atributy. Přidružení DTD k dokumentu XML
20. Jazyky pro popis XML schémat
DTD schémata. Nevýhody DTD schémat. obvody XDR. Prvky a atributy XDR schémat.
Myšlenka vytvořit si vlastní značky, které mají zvláštní význam a pomáhají popsat obsah dokumentu, je prostě sama o sobě úžasná. Ale pokud si každý uživatel může vytvořit svůj vlastní popis, jak je lze rozpoznat? Za tímto účelem specifikace XML používá schémata k popisu takových „domácích“ značek. Jsou nezbytné, aby:
popište, co přesně je označení;
přesně popsat, co označení znamená.
Nejznámější jazyky pro popis schématu jsou následující:
DTD (Document Type Definition) je jazyk pro definici typu dokumentu, který byl původně používán jako jazyk pro popis struktury dokumentu SGML.
XDR (XML Data Reduced) je dialekt schématu XML vyvinutý společností Microsoft, který byl podporován v aplikaci Internet Explorer verze 4 a 5.
XML Schema nebo jednoduše XSD (XML Schema Definition Language) je doporučení W3C od roku 2001.
Pojďme se blíže podívat na první dva z nich. Třetí jazyk popisu obvodu je zahrnut v Lab 11.
Schéma DTD
Schéma DTD poskytuje šablonu označení dokumentu, která určuje přítomnost, pořadí a uspořádání prvků a jejich atributů v dokumentu XML.
Z hlediska DTD lze obsahový model dokumentu XML popsat následovně:
Každý prvek dokumentu může mít jeden z následujících typů:
Syntax |
Komentář |
|
Obsahuje pouze textová data |
||
Další prvky |
Obsahuje pouze podřízené prvky |
|
Smíšený |
Obsahuje kombinaci textových dat a podřízených prvků |
|
Neobsahuje nic |
||
Atributy nalezené uvnitř značek dokumentu jsou popsány samostatně pomocí syntaxe:
název_prvku název_atributu1 (typ) výchozí_hodnota
…………………………………………………………………………………...
název_prvku název_atributuN (typ) výchozí_hodnota >
V tomto případě může mít atribut v DTD jeden ze tří typů:
Označený atribut
Atribut s výčtem
Kromě typu atributu můžete také nastavit jeho modalitu:
Uvažujme jako příklad popis atributů typu řetězec pro prvek popisující zprávu:
číslo CDATA #VYŽADOVÁNO
datum CDATA #VYŽADOVÁNO
z CDATA #FIXED
stav CDATA #IMPLIED>
Pokud tento prvek obsahuje výčtové atributy, pak by jejich popis mohl vypadat například takto:
číslo ID #POŽADOVÁNO
z CDATA #VYŽADOVÁNO
výstraha (nízká | normální | naléhavá) "normální">
Atributy označených prvků mohou být čtyř typů:
Nakonec lze v DTD použít následující indikátory výskytu sekvence:
Symbol |
Příklad |
Popis |
Postupné použití prvků seznamu |
||
Je použit jeden z členů seznamu |
||
Používá se pouze jeden prvek |
||
Volitelné použití (0 nebo 1krát) |
||
Použité jednou nebo vícekrát |
||
Použito nulakrát nebo vícekrát |
Jako příklad uvádíme DTD diagram popisující strukturu elektronické schránky:
Zdrojový dokument XML, který splňuje toto schéma, může vypadat například takto:
Připomeňte mi schůzku.
Věnujte pozornost 2. řádku dokumentu, který označuje externí odkaz do souboru obsahujícího schéma DTD.
DTD v zásadě umožňuje dva způsoby použití v dokumentu XML.
Interní deklarace schématu:
Deklarace externího schématu:
Na závěr poukazujeme na následující nevýhody DTD schémat:
Nejsou to instance XML. Vyžaduje to naučit se úplně jiný jazyk.
Neposkytují kontrolu nad datovými typy s výjimkou velmi jednoduchých textových dat.
Nejedná se o instance XML, takže je nelze snadno rozšířit nebo převést do jiných značkovacích jazyků, jako je HTML nebo DHTML.
Neposkytuje podporu pro jmenné prostory XML.
obvod XDR
XML-Data celé jméno Jazyk popisu schémat společnosti Microsoft a XML-DataReduced je „součástí“ úplného doporučení. Schéma XDR je instancí XML, tj. Splňuje všechna pravidla syntaxe a standardy XML.
Implementací kontroly dat na úrovni dokumentů pomocí schématu lze optimalizovat aplikace, které generují a přijímají transakce, pro maximální výkon. Shoda polí a platnost záznamu jsou kontrolovány na úrovni instance XML.
Kořenový prvek ve schématu XDR je vždy prvek Schema:
name="schema_name" xmlns="urn:schemas-microsoft-com:xml-data"
xmlns:dt="urn:schemas-microsoft-com:datatypes">
<-- Объявления других элементов -->
Element ElementType má syntaxi:
content="(prázdné | texOnly | eltOnly | smíšené)">
dt:type "datatype"
model="(otevřeno | zavřeno)"
order="(jeden | další | mnoho)"
Element ElementType může mít následující atributy:
Název atributu |
Popis |
Název prvku |
|
Typ dat položky |
|
Může nabývat hodnot: |
|
Otevřeno – povoleno použití prvky nedefinované ve schématu |
|
Uzavřeno – je zakázáno používat prvky nedefinované ve schématu |
|
Pořadí sekvence podřízené prvky v instanci XML. Platné hodnoty: |
|
jeden – předpokládá se existence jednoho dokumentu |
|
mnoho – libovolný počet prvků v libovolném pořadí |
|
seq – prvky jsou specifikovány v přesně stanoveném pořadí. |
Jako podřízené prvky pro ElementType lze použít následující:
Název prvku |
Popis |
Deklaruje podřízený prvek |
|
Poskytuje popis ElementType |
|
Poskytuje datový typ prvku ElementType |
|
Definuje pořadí prvků |
|
Definuje atribut |
|
Definuje informace o AttributeType podřízeného prvku |
Syntaxe použitá k deklaraci atributů je:
default="default-value" dt:type="primitive-type" dt:values="enumerated-values" požadované="(ano|ne)" Prvek AttributeType zase může mít následující atributy: Význam Popis Výchozí hodnota Jeden z následujících typů: entita, entity, výčet, id, idref, nmtoken, nmtokens, notace, řetězec Platné hodnoty Název atributu Označuje, že atribut musí být přítomen v popisu Syntaxe pro popis prvku atributu je následující: default="default-value" type="attribute-type" a jeho možné hodnoty mohou být: Význam K definování struktury dokumentů XML použijte schémata XML namísto DTD XML Schema je výkonnější než DTD. Abychom ilustrovali výhody použití nástroje XML Schema, první tři výpisy porovnávají různé způsoby reprezentace prvků. Následuje výňatek z dokumentu XML. B ukazuje dva prvky deklarované v syntaxi DTD a B ukazuje syntaxi odpovídající schématu XML. Všimněte si, že syntaxe ve výpisu 3 je podobná syntaxi XML. Při použití schématu může validační analyzátor zkontrolovat, zda je prvek InvoiceNo kladné celé číslo a zda ProductID sestává z dané sady znaků (šest čísel a jedno písmeno od A do Z). Analyzátor zpracovávající definici DTD může pouze potvrdit, že dané prvky jsou řetězce. Přestože DTD sloužily vývojářům SGML a HTML jako mechanismus pro popis strukturovaných informací již 20 let, mají DTD ve srovnání se schématy XML určitá omezení. Podle DTD může být prvek reprezentován jedním ze tří způsobů: DTD nemají syntaxi XML a nabízejí pouze omezenou podporu pro typy a jmenné prostory. Při společné práci může jedna strana zpracovávat dokumenty ostatních stran a různé strany mohou své datové prvky zastupovat odlišně. Navíc v samostatném dokumentu mohou potřebovat nezávisle odkazovat na prvky se stejným názvem vytvořené různými stranami. Použití schématu XML umožňuje odlišit definice se stejným názvem definováním různých jmenných prostorů. Takové schéma XML definuje sadu nových názvů, jako jsou názvy prvků, typů, atributů a skupin atributů, jejichž definice a deklarace jsou popsány ve schématu. Názvy jsou definovány jako InvoiceNo , ProductID a ProductCode . Názvy definované ve schématu patří do tzv cílový jmenný prostor. Samotný jmenný prostor je pevný, libovolný název, který musí odpovídat syntaxi adresy URL. Například jmenný prostor pro schéma uvedené v , lze nastavit takto: http://www.SampleStore.com/Account. Syntaxe pro deklaraci jmenného prostoru může být někdy matoucí. Deklarace začíná http:// , ale neodkazuje na soubor schématu. Ve skutečnosti odkaz http://www.SampleStore.com/Account nevede vůbec na žádný soubor, ale pouze na přiřazený název. Definice a deklarace ve schématu mohou odkazovat na názvy, které mohou patřit do jiných jmenných prostorů. V tomto článku odkazujeme na takové jmenné prostory jako: původní jmenné prostory. Každé schéma může definovat jeden cílový jmenný prostor a případně více zdrojových jmenných prostorů. Obecně platí, že každé jméno v daném schématu patří do určitého jmenného prostoru. Názvy jmenných prostorů mohou být poměrně dlouhé, ale lze je zkrátit pomocí syntaxe deklarace xmlns v dokumentu schématu XML. Všechny tyto pojmy jsou znázorněny v. Ve schématu XML reprezentovaném pomocí je jmenný prostor targetNamespace http://www.SampleStore.com/Account a obsahuje názvy InvoiceNo, ProductID a ProductCode. Názvy schéma , element , simpleType , pattern , string a kladné celé číslo patří do původního jmenného prostoru http://www.w3.org/1999/XMLSchema , který je zkrácen na xsd deklarováním xmlns . Na aliasu xsd není nic zvláštního, můžete si vybrat jiné jméno. Pro pohodlí a jednoduchost budeme ve zbývající části článku používat předponu xsd k odkazování na jmenný prostor http://www.w3.org/1999/XMLSchema, přičemž v některých částech kódu vynecháme kvalifikaci xsd. V našem příkladu je targetNamespace také jedním z původních jmenných prostorů, protože název ProductCode se používá v definici jiných jmen. Definování prvku spočívá v definování jeho názvu a modelu obsahu. Ve schématu XML je model obsahu prvku určen jeho typem. Prvky v dokumentu XML proto mohou mít pouze hodnoty, které odpovídají typům definovaným v jeho schématu. Specifikace schématu XML definuje několik jednoduchých typů hodnot, jak ukazuje Tabulka 2 – předdefinované jednoduché typy hodnot. Typ prvku může být jednoduchý nebo komplexní (komplexní). Živel jednoduchý typ nemůže obsahovat jiné prvky nebo atributy. Komplexní typ může mít za následek vkládání prvků do jiných prvků nebo může k prvku přidružovat atributy. Dosud jsme používali pouze příklady s jednoduchými uživatelsky definovanými typy (viz Kód produktu). Specifikace XML Schema také obsahuje předdefinované jednoduché typy (viz rámeček). Předdefinovaný jednoduchý typ Omezuje hodnoty na jejich základní typ. Například hodnota předdefinovaného jednoduchého typu ProductCode je podmnožinou hodnot základní typřetězec . Prvku, který neobsahuje žádné atributy nebo jiné prvky, lze přiřadit jednoduchý typ, předdefinovaný nebo definovaný uživatelem, jako je řetězec, celé číslo, desítkové číslo, čas, Kód produktu atd. Nyní zkusme přidat jednoduchý prvek cena z atributu měny. Nebudete to moci udělat, protože prvek jednoduchého typu nemůže mít atributy. Pokud chcete přidat atribut, musíte definovat cenu jako prvek komplexního typu. V příkladu z , definujeme tzv anonymní typ, ve kterém komplexní typ nemá explicitní název. jinými slovy, atribut názvu není definován komplexní typ prvku. V dokumentu XML mohou být do prvku vnořeny další prvky. Tento požadavek je vyjádřen přímo v DTD. Schéma XML místo toho definuje prvek a jeho typ, který může zahrnovat deklarace dalších prvků a atributů. Příklad je uveden v. Schéma XML nabízí větší flexibilitu než DTD při vyjadřování omezení v modelu obsahu prvku. Na nejjednodušší úrovni, jako je DTD, můžete přiřadit atributy k prvku a také určit, že sekvence pouze jednoho (1), nula nebo více (*) nebo jednoho nebo více (+) prvků daného prvku prvek se v něm může objevit. Další omezení můžete vyjádřit ve schématu XML například pomocí atributů minOccurs a maxOccurs u elementu elementu a elementu choice , group a all. Tag Title je volitelný s ohledem na tag Book (stejné pravidlo lze nastavit v DTD). Také však říká, že prvek Kniha musí mít alespoň jeden a ne více než dva prvky Autor. Výchozí hodnota atributů minOccurs a maxOccurs tagu prvku je 1. Element choice označuje, že se může objevit pouze jeden ze zadaných podřízených prvků. Další prvek all určuje, že všechny podřízené prvky se mohou objevit pouze jednou, společně a v libovolném pořadí, nebo se nemusí objevit vůbec. B prohlašuje, že štítky Název i Autor se musí objevit v Knize v libovolném pořadí, nebo se nemusí objevit vůbec. Taková omezení je obtížné vyjádřit pomocí DTD. V tomto dokumentu jsme na jednoduchých příkladech pokryli nejzákladnější pojmy potřebné k definování struktury prvků pomocí schématu XML. K dispozici je také mnoho dalších výkonných mechanismů: Další informace o schématech XML lze získat z dokumentace na stránkách W3C (viz) a v zóně dW XML. Nyní, když byla specifikace XML Schema potvrzena jako kandidát na doporučení W3C, můžete ji s jistotou využít v plném rozsahu. V dokumentech XML definuje DTD sadu platných prvků, identifikuje prvky, které mohou být obsaženy v jiných prvcích, a pro každý z nich definuje platné atributy. Syntaxe DTD je velmi unikátní a vyžaduje další úsilí od autora-vývojáře při vytváření takových dokumentů (složitost DTD je jedním z důvodů, proč se použití SGML, které vyžaduje definování DTD pro jakýkoli dokument, nerozšířilo jako například HTML). Jak bylo uvedeno, není nutné používat DTD v XML – dokumenty vytvořené bez těchto pravidel budou parserem zpracovány správně, pokud splňují základní požadavky syntaxe XML. Kontrola nad typy prvků a správností vztahů mezi nimi však bude v tomto případě zcela spočívat na autorovi dokumentu. Dokud nebude popsána gramatika našeho nového jazyka, budeme jej moci používat pouze my, a k tomu budeme nuceni používat speciálně vyvinutý software, nikoli univerzální programy pro analýzu. DTD pro XML používá následující typy pravidel: pravidla pro prvky a jejich atributy, popisy kategorií (definice maker), popisy formátů binárních dat. Všechny popisují základní konstrukce jazyka - prvky, atributy, symbolické konstanty, externí binární datové soubory. Abychom mohli použít DTD v našem dokumentu, můžeme jej buď popsat v externím souboru a při popisu DTD jednoduše uvést odkaz na tento soubor, nebo přímo uvnitř dokumentu vybrat oblast, ve které definujeme potřebné pravidla. V prvním případě dokument specifikuje název souboru obsahujícího popisy DTD:
...
Uvnitř dokumentu jsou deklarace DTD zahrnuty takto:
...
...
]>
...
V případě, že jsou současně použity interní a externí popisy, program analyzátoru nejprve vezme v úvahu interní, tzn. jejich priorita je vyšší. Při ověřování dokumentu procesor XML nejprve hledá DTD v dokumentu. Pokud pravidla uvnitř dokumentu nejsou definována a atribut není nastaven standalone="ano", pak program načte zadaný externí soubor a odtud se načtou pravidla v něm obsažená. Pokud je atribut samostatný záležitosti "Ano“, pak bude použití externích popisů DTD zakázáno. Prvek v DTD je definován pomocí úchytu! ŽIVEL, který určuje název prvku a strukturu jeho obsahu. Například pro prvek
Klíčové slovo ELEMENT označuje, že tento příkaz bude popisovat prvek XML. Uvnitř této instrukce je uveden název prvku (květina) a typ jeho obsahu. V definici prvku nejprve určíme název prvku (květina), a poté jeho obsahový model – určíme, jaké další prvky nebo datové typy se v něm mohou vyskytovat. V tomto případě bude obsah květinového elementu určen pomocí speciálního PCDATA markeru (což znamená parsovatelná znaková data - jakákoliv informace, se kterou může program analyzátoru pracovat). Existují dva další příkazy, které definují typ obsahu: EMPTY,ANY. První znamená, že prvek by měl být prázdný (např. Posloupnost podřízených objektů pro aktuální prvek je určena jako seznam názvů prvků oddělených čárkami. V tomto případě, aby bylo možné označit počet opakování inkluzí těchto prvků, symboly +, *, ? :
Tento příklad určuje, že uvnitř prvku
Znak * v tomto příkladu označuje, že posloupnost definovaných vnitřních prvků se může několikrát opakovat nebo se nemusí vůbec použít. Pokud definice prvku specifikuje "smíšený" obsah, tzn. textová data nebo sadu prvků, musíte nejprve zadat PCDATA a poté je oddělit "|" seznam prvků. Příklad platného XML dokumentu:
]>
...
Seznamy atributů prvků jsou definovány pomocí klíčového slova! ATTLIST. Uvnitř jsou uvedeny názvy atributů, typy jejich hodnot a další parametry. Například pro prvek
V tomto příkladu pro prvek článek jsou definovány tři atributy: id, o A typ, které mají typy ID (identifikátor), CDATA a seznam možných hodnot, resp. Existuje celkem šest možných typů hodnot atributů: V definici atributu můžete také použít následující parametry: Entita představuje definice, jejichž obsah lze v dokumentu znovu použít. V jiných programovacích jazycích se podobné prvky nazývají makrodefinice. Komponenty DTD se vytvářejí pomocí příkazu!ENTITY:
Program analyzátoru, který se nejprve podívá na obsah oblasti definice DTD, tuto instrukci zpracuje a při další analýze dokumentu použije obsah komponenty DTD v místě, kde se vyskytuje její název. Tito. Nyní v dokumentu můžeme použít výraz, který bude nahrazen řádkem "Rádi vás vítáme" Obecně lze v rámci DTD definovat tři typy definic maker: Interní definice maker- jsou navrženy tak, aby s jejich pomocí definovaly řetězcovou konstantu, můžete uspořádat odkazy na často se měnící informace, čímž se dokument stane čitelnějším; Vnitřní součásti jsou v dokumentu zahrnuty pomocí ampersand & V XML je pět předdefinovaných interních znakových konstant: Externí definice maker- ukažte na obsah externího souboru a tento obsah může být textová nebo binární data. V prvním případě budou vloženy textové řetězce tam, kde je makro použito, ve druhém - binární data, která analyzátor nezohledňuje a používají je externí programy
Definice makra pravidla- definice makra parametrů lze použít pouze v oblasti DTD a jsou označeny speciálním symbolem % vloženým před název makra. V tomto případě bude obsah komponenty umístěn přímo v textu pravidla DTD Například pro následující fragment dokumentu:
Můžete použít kratší formulář:
Makra se často používají k popisu parametrů v pravidlech atributů. V tomto případě je možné použít stejné definice atributů pro různé prvky:
Poměrně často potřebuje vývojář při vytváření prvku XML určit, jaký typ dat lze použít jako jeho obsah. Tito. pokud definujeme prvek Pokud je jako klientský program použit ověřovací XML procesor, lze informace o typu přenášet pomocí prvku speciálně vytvořeného pro tento atribut, který má vhodnou definici DTD. Během procesu analýzy předá analyzátor hodnotu tohoto atributu klientské aplikaci, která může tyto informace použít podle očekávání. Chcete-li například určit, že obsah prvku musí být dlouhé celé číslo, můžete použít následující definici DTD:
Nastavením atributu na výchozí hodnotu LONG a jeho definováním jako FIXED jsme umožnili klientskému programu získat potřebné informace o typu obsahu tohoto prvku a nyní může nezávisle určit, zda je typ obsahu tohoto prvku zadán. v definici DTD. Zde je příklad dokumentu XML, který definuje a používá několik prvků s různými datovými typy:
...
Jak je vidět z příkladu, mechanismus vytváření prvků dokumentu se vůbec nezměnil. Všechny informace potřebné ke kontrole datových typů jsou obsaženy v definicích prvků uvnitř bloku DTD. Na závěr bych rád poznamenal, že DTD nám poskytuje velmi pohodlný mechanismus pro kontrolu obsahu dokumentu. Dnes téměř všechny programy pro prohlížení internetových dokumentů používají pravidla DTD. Není to však zdaleka jediný způsob, jak zkontrolovat správnost dokumentu. Konsorcium W3 v současné době zvažuje nový standard jazyka pro strukturu dokumentů nazvaný datová schémata. Další část je věnována práci s nimi. V této kapitole budeme diskutovat o atributech DTD. Atribut poskytuje více informací o prvku nebo přesněji definuje vlastnost prvku. Atribut XML je vždy ve formě páru im-value. Prvek může mít libovolný počet jedinečných atributů. Deklarace atributů je v mnoha ohledech velmi podobná deklaracím prvků, kromě jednoho; Místo deklarování povoleného obsahu pro prvky deklarujete seznam povolených atributů pro každý prvek. Tyto seznamy jsou volány deklarací ATTLIST. Základní syntaxe pro deklarování atributů DTD je následující:
Ve výše uvedené syntaxi Spusťte atributy DTD pomocí
název-prvku určuje název prvku, na který je atribut aplikován. atribut-name určuje název atributu, který je součástí prvku name. atribut-type definuje typ atributů. Více o tom probereme v následujících částech. atribut s hodnotou má pevnou hodnotu, kterou musí atributy specifikovat. Více o tom probereme v následujících částech. Níže je jednoduchý příklad deklarování atributu v DTD:
]>
Výpis 1: Fragment dokumentu XML
Výpis 2: Fragment DTD popisující prvky z Výpisu 1
Výpis 3: Fragment schématu XML popisující prvky z Výpisu 1
Použití jmenných prostorů ve schématu XML
Omezení DTD
Výpis 4: Cílové a zdrojové jmenné prostory
Obrázek 1: Jmenné prostory pro výpis 4
Výpis 5: Vícenásobné zdrojové jmenné prostory, import jmenných prostorů
Definování prvků
Jednoduché typy
Jednoduché, nevnořené prvky mají jednoduchý typ
Výpis 7: Některé jednoduché typy prvků
Prvky s atributy musí být komplexního typu
Výpis 8: Prvek komplexního typu
Prvky obsahující vnořené prvky musí být komplexního typu
Tabulka 1: Porovnání komplexních datových typů v DTD a XML Schema
XML dokument
DTD
Schéma XML
Výpis 10: Skrytí BookType jako místního typu
Vyjádření komplexních omezení na prvky
Výpis 11: Vyjádření omezení typů prvků
Výpis 12: Označení, že prvek musí mít definovány všechny typy
Shrnutí
Definice prvku
Definování atributů
Definování komponent (definice maker)
Typování dat
Syntax
Příklad
Pojďme si projít výše uvedený kód:
Začněte deklarací XML s následujícím příkazem:
Bezprostředně za hlavičkou XML je deklarace typu dokumentu, běžně nazývaná DOCTYPE:
DOCTYPE sděluje analyzátoru, že DTD je spojeno s tímto dokumentem XML. Deklarace DOCTYPE má na začátku názvu prvku vykřičník (!).
Po těle DTD. Zde jsme deklarovali prvek a atribut:
Průkaz totožnosti atribut pro jméno prvek je definován jako:
Zde je typ atributu CDATA a jeho význam #POŽADOVANÝ.
Pravidla deklarace atributů
Všechny atributy použité v dokumentu XML musí být deklarovány v definici typu dokumentu (DTD) pomocí deklarace seznamu atributů.
Atributy se mohou objevit pouze v počátečních nebo prázdných značkách.
Klíčové slovo ATTLIST musí být v horní části písmen
V seznamu atributů pro daný prvek nebudou povoleny žádné dvojité názvy atributů.
Typy atributů
Deklarováním atributů můžete určit, jak by měl handler upravit data, která se objeví v hodnotě. Typ atributu můžeme rozdělit do tří hlavních kategorií:
Typ řetězce
Typy tokenizace
Uvedené typy
Následující tabulka obsahuje souhrn různých typů atributů:
Typ | Popis |
---|---|
CDATA | Znaková data CDATA (text a žádné zvýšení ceny). Typ atributu řetězce. |
Průkaz totožnosti | Toto je jedinečný atributový označení. Nemělo by se objevit více než jednou. Typ atributu Tokenizováno. |
IDREF | Používá se k odkazování na identitu jiného prvku. Používá se k navázání spojení mezi prvky. Typ atributu Tokenizováno. |
IDREFS | Používá se k odkazování na více ID. Typ atributu Tokenizováno. |
REALITA | V dokumentu představuje vnější realitu. Typ atributu Tokenizováno. |
REALITA | Představuje seznam vnějších realit v dokumentu. Typ atributu Tokenizováno. |
NMTOKEN | Je podobný CDATA a atribut value se skládá z platného názvu XML. Typ atributu Tokenizováno. |
NMTOKENS | Je podobný CDATA a atribut value se skládá ze seznamu platného názvu XML. Typ atributu Tokenizováno. |
OZNAČENÍ | Prvek bude odkazován na deklarovaný zápis v dokumentu DTD. Vyjmenovaný typ atributu. |
Označení | Umožňuje vám definovat konkrétní seznam hodnot, kde se jedna z hodnot musí shodovat. Vyjmenovaný typ atributu. |
Deklarování atributu hodnotou
V rámci každé deklarace atributu musíte definovat, jak se hodnota zobrazí v dokumentu. Můžete definovat atribut if: then
znamená
může mít výchozí hodnotu
může mít pevnou hodnotu
Automaticky přijímané hodnoty
Obsahuje výchozí hodnotu. Hodnoty mohou být uzavřeny v jednoduchých uvozovkách (") nebo dvojitých uvozovkách (")
SyntaxNásledující syntaxe hodnoty:
kde jsou výchozí hodnoty význam konkrétní atribut s hodnotou.
PříkladNásleduje jednoduchý příklad deklarace atributu s automaticky přijímanou hodnotou:
]>
V tomto příkladu máme prvek jméno S průkaz totožnosti atribut, jehož automaticky přijímaná hodnota 0 . Automaticky předpokládaná hodnota je obsažena v dvojitých uvozovkách.
PEVNÉ hodnoty
Klíčové slovo #FIXED pro následování pevné hodnoty se používá, když chcete určit, že atribut s hodnotou je konstantní a nelze jej změnit. Obecné použití pevných atributů definuje čísla verzí.
SyntaxNásleduje syntaxe pevné hodnoty:
kde #FIXED je specifický atribut s hodnotou.
PříkladNásleduje jednoduchý příklad deklarace atributu s hodnotou FIXED:
]>
V tomto příkladu jsme použili klíčové slovo #FIXED, kde znamená, že hodnota "tutorialspoint" je jedinou hodnotou pro jméno atribut
Následující neplatné DTD:
]>
POVINNÉ hodnoty
Pokud chcete určit, že atribut je povinný, použijte klíčové slovo #REQUIRED.
SyntaxPodle syntaxe #REQUIRED:
kde #REQUIRED je konkrétní typ atributu.
PříkladNásleduje jednoduchý příklad deklarace atributu DTD s klíčovým slovem #REQUIRED:
]>
V tomto příkladu jsme to určili pomocí klíčového slova #REQUIRED průkaz totožnosti atribut musí být uveden jmenný prvek- jméno
IMPLIKOVANÉ významy
Při deklaraci atributů musíte vždy zadat deklaraci hodnoty. Pokud atribut, který deklarujete, nemá žádnou výchozí hodnotu, nemá pevnou hodnotu a není povinný, musíte tento atribut deklarovat jako implicitní. Klíčové slovo #IMPLIED se používá k definování atributu jako implicitní.
SyntaxPodle syntaxe #IMPLIED:
kde #IMPLIED je konkrétní typ atributu.
PříkladPo jednoduchém příkladu #IMPLIED
]>
V tomto příkladu jsme použili klíčové slovo #IMPLIED, protože nechceme specifikovat žádné atributy, které mají být zahrnuty jménoživel. Je to volitelné.
Přesně takoví jsou. Navíc samotný XML zajišťuje rozšiřitelnost. Dokumenty vytvořené pomocí těchto jazyků mohou být „dobře vytvořené“ a „platné“.
Při kontrole správnosti dokumentu nejsou žádné problémy: pokud se neobjeví žádné chyby a vše se zobrazí tak, jak jsme chtěli, pak je dokument správný. Pokud například napíšete něco jako „
Platnost se kontroluje pomocí definice typu dokumentu (DTD). Například pro "striktní" HTML to vypadá takto.
DTD lze popsat jak uvnitř dokumentu, tak v samostatný soubor(podobně jako CSS: vestavěné a zásuvné styly).
DTD prohlášení
Deklarace DTD se umístí před první (kořenový) prvek dokumentu, počínaje sekvencí " ».
Interní DTD je popsáno takto:
Mezi hranaté závorky obsahuje obsah DTD, tzv vnitřní podmnožina, Například:
] >
Pokud je DTD umístěno v samostatném souboru (obvykle s příponou .dtd), je jeho deklarace v dokumentu zapsána takto:
Podle toho jsou všechna pravidla zapsána v tomto souboru, tzv externí podmnožina.
Název uvedený za slovem „DOCTYPE“ (v našem případě „katalog“) se musí shodovat s názvem kořenový prvek. To znamená, že dokument XML by měl být něco takového:
Místo klíčového slova „SYSTEM“ lze použít slovo „VEŘEJNÉ“ k označení, že DTD je určeno pro obecné použití:
Vnitřní a vnější podmnožiny lze zadat současně (opět podobně jako CSS):
] >
Zde se nejprve přečte obsah souboru „catalogue.dtd“ a poté obsah uvedený v hranatých závorkách.
Prvky dokumentu
Prvky jsou deklarovány v DTD pomocí klíčového slova „ELEMENT“, za kterým následuje název prvku a jeho obsah, uzavřený v závorkách:
Pokud má prvek podřízené prvky, zapíše se takto:
což odpovídá dokumentu:
Pokud má prvek několik podřízených prvků, jsou uvedeny oddělené čárkami a musí následovat přesně v určeném pořadí:
Výše uvedený příklad zní následovně. Prvek "kniha" musí obsahovat pouze jeden prvek "title" a za ním pouze jeden prvek "autor". Samotné prvky „title“ a „author“ neobsahují žádné prvky, ale mohou obsahovat pouze nějaký text.
Pomocí následujícího speciální znaky můžete určit kvantitativní přítomnost prvku:
- Znak „*“ za prvkem znamená, že prvek může být přítomen jednou nebo vícekrát, nebo nemusí být přítomen vůbec (od nuly do + nekonečna)
- Symbol „+“ za prvkem znamená, že prvek se může objevit jednou nebo vícekrát (od 1 do + nekonečna)
- Symbol "? ", za prvkem, znamená, že prvek může buď chybět, nebo může být přítomen pouze jednou (0 nebo 1)
Pokud je potřeba uvést jeden z několika prvků (buď název nebo autora – kterýkoli z nich, ale ne oba), musíte použít symbol " | ":
Rovnocenným účastníkem hry je i text. Klíčové slovo "PCDATA" označuje znaková data, která mají být analyzována, takže jakýkoli text obsahující značkovací znaky ("< », « >" a " & ") budou považovány za značky. Sdílení se nazývá text a prvky smíšený obsah. Při deklarování smíšeného obsahu musí být nejprve specifikováno „PCDATA“:
Následující fragment dokumentu je platný pro výše uvedený příklad:
Skupiny prvků jsou uzavřeny v závorkách. Prvek „kniha“ musí obsahovat buď text, nebo (jeden „název“, jeden nebo více „autor“ a možná jeden „rok hospody“ v tomto pořadí):
Tomuto příkladu odpovídá následující fragment dokumentu XML:
Prvek může být prázdný. Takový prvek nemůže obsahovat žádné podřízené prvky nebo text (například prvek „br“ v HTML). Takový prvek je specifikován pomocí klíčové slovo"PRÁZDNÝ":
Prvek lze také deklarovat pomocí klíčového slova „ANY“, což znamená, že prvek může obsahovat prvky i text, všechny, a dokonce může být prázdný.
Atributy prvku
Prvky v XML dokumentu mohou mít atributy, které se zapisují jako "název=hodnota" v úvodní resp prázdné značky. Deklarace obecných atributů konkrétní prvek začíná klíčovým slovem "ATTLIST" následovaným názvem tohoto prvku a deklarace samotných atributů:
Klíčové slovo "POŽADOVÁNO" označuje, že atribut je povinný. Klíčové slovo "IMPLIED" na druhé straně říká, že atribut je volitelný.
Atributy mohou mít seznam povolených hodnot:
Výchozí hodnotu lze také nastavit:
pubyear CDATA #IMPLIED "2007">
Atribut může být také konstanta, to znamená, že může mít pouze hodnotu, která je deklarována v deklaraci atributu. To se provádí pomocí klíčového slova „PEVNĚNO“:
#OPRAVENO "udvikler">
Typ atributu "CDATA" umožňuje použití jakýchkoli znaků kromě "< », « >", " & ", " " " A " " ". Pokud jsou použity, musí být tyto znaky nahrazeny speciálními znaky, jako je "< » и т.п. Внимание : в DTD ключевое слово « CDATA » имеет другое значение, чем раздел « CDATA » в XML-документе!
Kromě typu CDATA mohou mít atributy následující typy:
- NMTOKEN - může obsahovat pouze písmena, číslice, ". ", " - ", " _ " A " : "
- NMTOKENS – může obsahovat stejné znaky jako „NMTOKENS“ plus znaky mezery, konce řádku, posunu řádku a tabulátoru
Jiný typ atributu „ID“ umožňuje stejné hodnoty jako typ NMTOKEN, ale hodnota musí začínat buď písmenem „_“ nebo „:“. Každý prvek může mít pouze jeden atribut typu "ID". Atribut typu "ID" nemůže být konstantou (deklarováno jako "Pevně"). Hodnota atributu typu „ID“ musí být v celém dokumentu XML jedinečná:
Atribut prvku může být odkazem na atribut typu "ID" jiného prvku. K tomu je deklarován jako atribut typu "IDREF". Pokud atribut musí odkazovat na atribut typu „ID“ několika prvků, použije se klíčové slovo „IDREFS“:
V XML dokumentu to bude vypadat takto:
Prohlašující subjekty
Kromě prvků a jejich atributů můžeme definovat esence, napsané pomocí klíčového slova „ENTITY“:
V důsledku toho bude název entity „name“ nahrazen její hodnotou, v našem případě „SuperMegaMaster“.
A abychom naše štěstí dokončili, musíme dodat, že atributy prvků mohou mít podobné entity jako významy – entity-atributy. Jsou také definovány pomocí klíčového slova „ENTITY“, ale mají jedno omezení – musí odkazovat na externí neanalyzované entity definované v externí podmnožině DTD:
] >
Ve výše uvedeném příkladu je deklarována entita "seznam", která odkazuje na externí dokument"companyList.html". Klíčové slovo "NDATA" označuje, že externí dokument není dokument XML. Dále je pro element „user“ deklarován atribut „company“, který je povinný a má typ „ENTITY“, to znamená, že odkazuje na nějakou entitu. Protože v našem příkladu je uvedena pouze jedna entita („seznam“), může být hodnotou atributu „společnost“ v dokumentu XML pouze ona:
Zbývá jen pochopit, co znamená „parse“ v deklaračním řádku entity „seznam“? Když jsou použita neanalyzovaná data, to znamená data, která nejsou analyzována analyzátor XML, bylo by hezké dát aplikaci (pomocí tohoto XML dokumentu) informaci, jak tuto entitu případně zpracovat. K tomu musíme použít notaci specifikovanou klíčovým slovem „NOTATION“ a doplnit naše DTD následovně:
Slovo "parse" v deklaraci entity listu označuje, jak můžete analyzovat soubor "companyList.html" - vyhledejte zápis nazvaný "parse" a postupujte podle jeho pokynů. V našem případě aplikace umí otevřít MS InternetExplorer a načíst do něj dokument „companyList.html“.