• Úvod do XML DTD. Jazyky schémat XML

    Definice typu dokumentu (DTD) deklaruje platné stavební bloky XML dokument. Definuje strukturu dokumentu se seznamem povolených prvků a atributů.

    DTD lze deklarovat jak v kódu samotného XML dokumentu, tak v externí soubor připojení k XML dokumentu.

    Interní prohlášení DTD

    Pokud je DTD deklarováno uvnitř XML soubor a, pak musí být uzavřena ve speciální deklarační značce DOCTYPE, který má následující syntaxi:

    Příklad dokumentu XML s interním DTD:

    ]> Tove Jani Připomínka Nezapomeň na mě tento víkend

    DTD ve výše uvedeném příkladu je interpretováno následovně:

    • !DOCTYPE poznámka určuje, že kořenový prvek dokumentu je Poznámka
    • Poznámka !ELEMENT určuje, že prvek Poznámka obsahuje čtyři prvky: do, z, záhlaví, tělo
    • !ELEMENT do určuje, že prvek na to by mělo být
    • !ELEMENT od určuje, že prvek z musí být typu "#PCDATA"
    • Nadpis !ELEMENT určuje, že prvek nadpis musí být typu "#PCDATA"
    • Tělo !ELEMENT určuje, že prvek tělo musí být typu "#PCDATA"

    Externí DTD

    Pokud je DTD deklarováno v externím souboru, připojení se provede následovně:

    Následuje stejný dokument XML jako dříve, ale s externí deklarací DTD:

    Tove Jani Připomínka Nezapomeň na mě o víkendu

    A zde je to, co je obsaženo v souboru „note.dtd“, který deklaruje DTD:

    K čemu se DTD používá?

    S DTD může každý z vašich souborů XML nést popis svého vlastního formátu.

    S DTD se mohou různé, nesouvisející skupiny lidí dohodnout na standardech pro výměnu dat.

    S DTD si můžete být jisti, že to, co dostanete externí zdrojeúdaje budou správné.

    DTD můžete také použít k provádění ověřovacích kontrol vašich vlastních dat.

    DTD je sada pravidel syntaxe, podle kterých se ověřuje struktura dokumentu XML. DTD explicitně definuje strukturu dokumentu XML, specifikuje prvky a jejich atributy a poskytuje další informace, které platí pro všechny dokumenty XML založené na DTD.

    Všimněte si, že přítomnost DTD je volitelná. Pokud existuje DTD, systém XML jej použije k interpretaci dokumentu XML. Pokud neexistuje DTD, očekává se, že systém XML bude dokument interpretovat svým vlastním způsobem. Stále se však doporučuje vytvářet DTD pro dokumenty XML, protože to usnadňuje jejich interpretaci a kontrolu struktury.

    DTD může být zahrnuto přímo v dokumentu XML, odkazováno pomocí adresy URL nebo kombinací obou. Při přímém zahrnutí DTD do dokumentu XML se definice DTD umístí hned za prolog:

    Atribut root element_name odpovídá názvu kořenového elementu ve značkách, které obsahují celý dokument XML. Sekce "ostatní deklarace" obsahuje definice prvků, atributů atd.

    Možná dáváte přednost umístění DTD samostatný soubor poskytnout modulární strukturu programu. Podívejme se, jak vypadá odkaz na externí DTD v dokumentu XML. Úloha je vyřešena jedním jednoduchým příkazem:

    Stejně jako u interního DTD musí kořenový název_prvku odpovídat názvu kořenového prvku ve značkách, které obsahují celý dokument XML. Atribut SYSTEM označuje, že some_dtd.dtd je umístěn na lokální server. Na some_dtd.dtd však lze odkazovat také pomocí jeho absolutní adresy URL. Nakonec uvozovky označují adresu URL externího DTD umístěného na místním nebo vzdáleném serveru.

    Jak tedy vytvoříte DTD pro výpis 14.1? Nejprve v dokumentu XML vytvoříme odkaz na externí DTD. Jak bylo uvedeno v předchozí části, reference DTD vypadá takto:

    Když se vrátíme k výpisu 14-1, vidíme, že cookbook je název kořenového prvku a cookbook.dtd je název souboru DTD. Obsah DTD je uveden ve výpisu 14.2 a níže podrobné popisy všechny řádky.

    Výpis 14.2. Výpis 14.1 DTD(kuchařka.dtd)

    ] >

    Co tento tajemný dokument znamená? Navzdory vnější složitosti je to ve skutečnosti docela jednoduché. Pojďme si projít obsah výpisu 14.2:

    Před námi je XML prolog, který byl již zmíněn výše.

    Třetí řádek popisuje prvek XML, v tento případ je základním prvkem kuchařky. Za ním následuje slovo recept v závorkách. To znamená, že štítky kuchařky mají vnořený štítek s názvem recept. Znak + označuje, že štítky nadřazené kuchařky obsahují jeden nebo více párů štítků receptů.

    Čtvrtý řádek popisuje značku receptu. Uvádí, že značka receptu má čtyři dílčí značky: název, popis, přísady a proces. Protože za jmény tagů nejsou žádné opakující se znaky (viz další část), musí být mezi tagy receptů uzavřen přesně jeden pár každého z uvedených tagů.

    Zde je první definice značky, která neobsahuje vnořené značky. Podle definice obsahuje #PCDATA, což jsou libovolná znaková data, která nejsou považována za součást označení.

    Podle definice obsahuje prvek ingredience jednu nebo více značek s názvem ingredience. Podívejte se na výpis 14.1 a pochopíte.

    Protože prvek ingredience odpovídá jedné ingredience, dává smysl, aby tento prvek obsahoval jednoduchá znaková data.

    Prvek procesu obsahuje jednu nebo více instancí prvku krok.

    Prvek krok, stejně jako prvek ingredience, odpovídá jedné položce v seznamu vysoká úroveň. Musí tedy obsahovat znaková data.

    Všimněte si, že prvek receptu ve výpisu 14-1 obsahuje atribut. Tento atribut, category, definuje obecnou kategorii, do které recept patří – v zobrazeném příkladu je kategorie „italská“. Definice ATTLIST specifikuje jak název prvku, tak název atributu. Přiřazení každého receptu do určité kategorie navíc zjednodušuje klasifikaci, takže atribut je deklarován jako povinný (#REQUIRED).

    Poslední řádek jednoduše ukončí definici DTD. Definice musí být vždy řádně vyplněna, jinak dojde k chybě.

    Tuto část zakončím shrnutím hlavních součástí typického souboru DTD:

    • deklarace typu prvku;
    • deklarace atributů;
    • ID, IDREF a IDREFS
    • prohlášení entity.

    S některými z těchto komponent jsme se již setkali v popisu výpisu 14.2. Dále bude každá komponenta popsána podrobněji.

    Deklarace prvků

    Všechny prvky použité v dokumentu XML musí být definovány v DTD, které dokument doprovází. Již jsme viděli dva běžné druhy definic: pro prvek obsahující jiné prvky a pro prvek obsahující znaková data. Tato definice označuje, že prvek obsahuje pouze znaková data:

    Následující definice prvku procesu říká, že obsahuje přesně jeden vnořený prvek s názvem krok:

    Procesy (proces) z jednoho kroku (kroku) jsou však poměrně vzácné - s největší pravděpodobností jich bude několik. Chcete-li označit, že prvek obsahuje jednu nebo více instancí vnořeného prvku kroku, použijte příznak opakování:

    Počet vnořených prvků lze nastavit několika způsoby. Úplný seznam operátory prvků jsou uvedeny v tabulce. 14.1.

    Tabulka 14.1. Operátoři prvků

    Pokud bude prvek obsahovat několik vnořených prvků, měly by být v definici nadřazeného prvku uvedeny oddělené čárkami:

    Protože neexistují žádné náznaky opakování, musí se každý tag vyskytnout právě jednou.

    Definice prvku je upřesněna pomocí logické operátory. Předpokládejme, že pracujete s recepty, které vždy obsahují těstoviny s jedním nebo více druhy sýra (sýr) nebo masa (maso). V tomto případě je prvek přísady definován takto:

    Protože prvek těstoviny musí být přítomen v prvku ingredience, je označen znakem opakování +. Poté následuje buď sýrový prvek, nebo prvek maso; alternativy oddělíme svislými pruhy a uzavřeme je do závorek znaménkem +, protože recept vždy obsahuje buď jednu, nebo druhou.

    Existují další druhy definic prvků. Zvažovali jsme pouze ty nejjednodušší případy. Předložený materiál je však zcela dostatečný pro pochopení příkladů uvedených ve zbytku této kapitoly.

    Deklarace atributů

    Atributy prvku popisují hodnoty spojené s prvky. XML prvky, jako HTML prvky, může mít nula, jeden nebo více atributů. Obecná syntaxe pro deklarování atributů je následující:

    element_name určuje název prvku, který má být zahrnut do značky. Poté jsou uvedeny atributy spojené s prvkem. Každá deklarace atributu se skládá ze tří hlavních součástí: názvu, datového typu a příznaku, který definuje specifika atributu. Místo elipsy(...) mohou být umístěny deklarace jiných atributů.

    Už jsme viděli jednoduchou deklaraci atributu ve výpisu 14.2:

    Jak je však vidět z obecná definice, lze deklarovat více atributů současně. Řekněme, že kromě atributu kategorie chcete k prvku receptu přiřadit další atribut obtížnosti. Oba atributy jsou deklarovány ve stejném seznamu:

    Formátování reklam tímto způsobem je volitelné; víceřádkové deklarace jsou však čitelnější než jednořádkové deklarace. Vzhledem k tomu, že jsou vyžadovány oba atributy, nemůže být značka reci re omezena na žádný atribut, musí obsahovat oba atributy najednou. Například následující značka bude považována za neplatnou:

    Proč? Protože postrádá atribut category. Platná značka musí obsahovat oba atributy:

    Speciální podmínky pro zpracování atributů jsou popsány třemi příznaky, uvedenými v tabulce. 14.2.

    Tabulka 14.2. Příznaky atributů

    Typy atributů

    Atribut prvku lze deklarovat pomocí určitého typu. Typy atributů jsou popsány níže.

    CDATA atributy

    Atributy velmi často obsahují obecná znaková data. Takové atributy se nazývají atributy CDATA. Následující příklad již byl vidět na začátku této části:

    Atributy ID, IDREF a IDREFS

    S myšlenkou jednoznačné reprezentace dat (například informací o uživateli nebo produktu uloženém v databázi) prostřednictvím identifikátorů jsme se opakovaně setkali v předchozích kapitolách knihy. Identifikátory se také často používají v XML, protože křížové odkazy mezi dokumenty se používají nejen v společné úkoly zpracování dat, ale také po celém světě Web (hypertextové odkazy).

    ID prvků jsou přiřazeny atributu ID. Řekněme, že chcete každému receptu přiřadit jedinečné ID. Odpovídající fragment DTD může vypadat takto:

    Poté může deklarace prvku receptu v dokumentu vypadat takto:

    Špagety alla Carbonara

    Recept je jednoznačně identifikován identifikátorem ital003. Všimněte si, že atribut redpe-id je typu ID, takže ital003 nelze použít jako hodnotu atributu recept-id jiného prvku, jinak bude dokument považován za syntakticky neplatný. Nyní řekněme, že později budete chtít odkazovat na tento recept z jiného dokumentu – řekněme ze seznamu oblíbených receptů uživatele. Zde vstupují do hry křížové odkazy a atribut IDREF. Atributu IDREF je přiřazen identifikátor používaný k odkazování na prvek, podobně jako se adresa URL používá k identifikaci stránky v hypertextovém odkazu. Zvažte následující fragment kódu XML:

    Při zpracování XML dokumentu je prvek nahrazen popisnějším odkazem na recept se zadaným identifikátorem (např. názvem receptu). Pravděpodobně bude naformátován jako hypertextový odkaz, aby bylo snazší přejít na zadaný recept.

    Vyjmenované atributy

    Při deklaraci atributu můžete vyjmenovat všechny platné hodnoty, které atribut může nabývat. V našem příkladu by to bylo užitečné, protože můžete okamžitě definovat seznam platných kategorií. Výše uvedené prohlášení je napsáno takto:

    Pamatujte, že při použití seznamů platných hodnot nemusíte do deklarace uvádět typ CDATA, protože všechny uvedené hodnoty jsou ve formátu CDATA.

    Výčtové atributy s výchozí hodnotou

    Někdy je vhodné deklarovat výchozí hodnotu atributu. Je pravděpodobné, že jste to již dříve dělali při vytváření formulářů s rozevíracími seznamy. Pokud je například většina receptů ve vaší kuchařce italská, atribut recept bude často kategorizován jako italský. V tomto případě může být italská kategorie přiřazena jako výchozí:

    Pokud atribut category není explicitně nastaven, je výchozí italština.

    Atributy ENTITY a ENTITIES

    Data v dokumentech XML nejsou vždy textová – dokument může obsahovat i binární informace (např. grafiku). Na taková data lze odkazovat pomocí atributu entity. Například v popisu prvku description můžete zadat atribut recipePicture s grafickým obrázkem:

    Můžete také deklarovat více entit najednou nahrazením ENTITY za ENTITIES. Hodnoty jsou odděleny mezerami.

    Atributy NMTOKEN a NMTOKENS

    Atributy NMTOKEN jsou řetězce znaků v omezené sadě. Deklarace atributu typu NMTOKEN předpokládá, že se hodnota atributu shoduje zavedená omezení. Hodnota atributu NMTOKEN se zpravidla skládá z jednoho slova:

    Můžete deklarovat více atributů najednou nahrazením NMTOKEN za NMTOKENS. Hodnoty jsou odděleny mezerami.

    Prohlášení subjektu

    Deklarace entity je podobná příkazu define v některých programovacích jazycích, včetně PHP. Odkazy na entity byly stručně zmíněny v předchozí části Pochopení syntaxe XML. Pro jistotu si pamatujte, že odkaz na entitu se používá jako náhrada za jiný obsah. Během zpracování dokumentu XML jsou všechny výskyty entity nahrazeny obsahem, který představuje. Existují dva druhy entit: vnitřní a vnější.

    Vnitřní entity

    Interní entity jsou jako řetězcové proměnné, které spojují název s částí textu. Pokud například chcete definovat název odkazující na informace o autorských právech, můžete deklarovat entitu takto:

    Během zpracování dokumentu jsou všechny výskyty &Copyright nahrazeny textem „Copyright 2000 YourCompanyName. Všechna práva vyhrazena. Se všemi XML v nahrazujícím textu se zachází tak, jako by byly přítomny v původním dokumentu.

    Interní entity jsou užitečné v situacích, kdy plánujete používat entitu relativně nesouvisejícím způsobem. ve velkém počtu XML dokumenty. Při velkém množství dokumentů je lepší využít externí entity.

    Externí entity

    Externí entity se používají k odkazování na obsah v jiném souboru. Entity tohoto typu mohou obsahovat textové informace, ale může také odkazovat na binární data (jako je grafika). Vrátíme-li se k předchozímu příkladu, řekněme, že se rozhodnete uložit informace o autorských právech do samostatného souboru, aby bylo možné je v budoucnu snadněji upravovat. Odkaz na vygenerovaný soubor vypadá takto:

    Při následném zpracování dokumentu XML jsou všechny reference &Copyright nahrazeny obsahem dokumentu copyright.xml. Se všemi XML v nahrazujícím textu se zachází tak, jako by byly přítomny v původním dokumentu.

    Externí entity jsou také užitečné pro odkazování grafické obrázky. Pokud například chcete do dokumentu XML zahrnout grafické logo, vytvořte externí entitu:

    Zdroje XML

    I když výše uvedený materiál je dostatečný k pochopení základní struktura XML dokumenty daný popis není kompletní. Níže jsou uvedeny odkazy na internetové zdroje obsahující podrobnější informace:

    Zbytek této kapitoly pojednává o tom, jak používat PHP ke zpracování dokumentů XML. Úloha se na první pohled zdá velmi složitá (lexikální analýza jakýchkoli dokumentů jakéhokoli typu způsobuje mnoho potíží).

    Ale jakmile se seznámíte se základní XML strategií PHP, je to překvapivě jednoduché.

    Popis schématu dokumentu

    DTD popisuje schéma dokumentu pro konkrétní značkovací jazyk pomocí sady deklarací (parametrové objekty, prvky a atributy), které popisují jeho třídu (nebo typ) z hlediska syntaktických omezení daného dokumentu. DTD může také deklarovat konstrukce, které jsou vždy nutné k definování struktury dokumentu, ale na druhou stranu mohou ovlivnit interpretaci určitých dokumentů.

    Deklarace objektů parametrů

    Deklarace objektu parametru definuje makro určitého typu, na které lze odkazovat a rozbalit je někde v DTD. Tato makra se nemusí objevit v samotném dokumentu, ale pouze v DTD. Pokud se na parametrický objekt odkazuje jeho název DTD, rozšíří se na řetězec, který určuje obsah tohoto objektu.

    Styl písma s parametrem objektu obsahuje skupinu tagů TT | já | b | VELKÉ | MALÝ.

    "#PCDATA | %fontstyle; | %phrase; | %special; | %formctrl;">

    Vložený objekt parametru obsahuje textová data a čtyři další objekty parametrů fontstyle, fráze, speciální a formctrl.

    Deklarace prvku

    Deklarace prvků tvoří seznam povolených názvů prvků v dokumentu a také definují informace o značkách (zda jsou vyžadovány) a model obsahu pro každý prvek.

    Rozličný klíčová slova a symboly definují obsah prvku:

    • EMPTY - prázdný obsah
    • ANY – jakýkoli obsah
    • , - označuje pořadí
    • | - oddělení alternativ
    • () - seskupení
    • * - libovolný počet prvků (nula nebo více)
    • + - alespoň jeden prvek (jeden nebo více)
    • ? - volitelná přítomnost prvku (nula nebo jedna)
    • Pokud ne *, + nebo? - musí existovat pouze jeden prvek

    (DT|DD) +>

    Prvek DL musí obsahovat jeden nebo více prvků DT nebo DD v libovolném pořadí.

    (%block;|SCRIPT) + -(FORM) >

    Prvek FORM musí obsahovat jeden nebo více prvků s parametrem objektu bloku nebo prvky SCRIPT v libovolném pořadí, není však možné obsahovat jiný prvek FORM.

    Definice atributu

    Každý prvek v dokumentu DTD může být spojen se seznamem atributů. K tomu slouží direktiva !ATTLIST, která specifikuje jméno elementu, ke kterému lze asociovat seznam atributů, a parametry každého atributu: jeho jméno, typ a výchozí vlastnosti.

    Například:

    název CDATA #REQUIRED>

    Tento příklad definuje atribut názvu pro prvek MAP. Je to povinné.

    Existují následující typy atributů:

    • CDATA (Znaková sada dat) - hodnota atributu může být jakákoli znaková data
    • ID - hodnota atributu musí být jedinečným identifikátorem prvku
    • IDREF - hodnota prvku je odkaz na prvek podle jeho ID
    • IDREFS - stejné jako IDREF , ale s možností propojení ne jedním identifikátorem, ale několika
    • NMTOKEN - hodnota atributu může být posloupnost znaků, poněkud podobná názvu (odtud název - token jména). Toto je řetězec, který obsahuje libovolnou kombinaci těch znaků, které jsou povoleny pro názvy XML.
    • NMTOKENS - hodnota atributu je seznam hodnot
    • ENTITY - hodnota se používá k odkazování na externí entitu.
    • ENTITY - umožňuje zadat seznam externích entit oddělených mezerami.
    • NOTATION - hodnota atributu může být jedním z dříve definovaných zápisů
    • ZÁPISY - umožňuje nastavit seznam zápisů.
    • Výpisy a výpisy NOTACE
    • VÝČET - udává seznam možných alternativ hodnot.

    K dispozici jsou následující výchozí vlastnosti:

    1. IMPLIED - hodnota atributu je volitelná;
    2. POVINNÉ - musí být zadána hodnota atributu;
    3. FIXED - Hodnota tohoto atributu je v DTD nastavena jako konstanta a nelze ji v dokumentu změnit;
    4. nějakou konkrétní hodnotu, která se používá ve výchozím nastavení.

    Přiřazení dokumentu ke konkrétnímu DTD

    Chcete-li přidružit dokument ke konkrétnímu DTD, musí se prvek Deklarace typu dokumentu objevit na začátku těla dokumentu.

    V závislosti na umístění DTD může být deklarace typu dokumentu dvou typů:

    • Vnitřní podmnožina DTD

    Sada deklarací DTD je obsažena v těle samotného dokumentu. Například:

    ]> ]>

    • Externí podmnožina DTD

    Sada deklarací DTD je umístěna samostatně textový soubor s příponou .dtd V tomto případě lze odkaz na soubor provést prostřednictvím veřejného identifikátoru a (nebo) prostřednictvím systémového identifikátoru. Například:

    "http://www.w3.org/TR/html4/strict.dtd">

    Příklad

    Příklad velmi jednoduchého XML DTD popisujícího seznam lidí:

    (osoba*) > (jméno, datum narození?, pohlaví?, číslo sociálního zabezpečení?) > (#PCDATA) > (#PCDATA) > (#PCDATA) >

    Počínaje prvním řádkem:

    1. Živel Obsahuje libovolný počet prvků Podepsat<*>znamená, že je možných 0, 1 nebo více prvků Uvnitř prvku .
    2. Živel Obsahuje prvky , , A . Podepsatznamená, že prvek je volitelný. Živel neobsahuje, což znamená, že prvek musí obsahovat prvek .
    3. Živel obsahuje data.
    4. Živel obsahuje data.
    5. Živel obsahuje data.
    6. Živel obsahuje data.

    Příklad dokumentu XML s tímto DTD:

    > > > Fred bloguje > > 27/11/2008> > mužský > > 1234567890> > >

    viz také


    Nadace Wikimedia. 2010 .

    Podívejte se, co je "DTD" v jiných slovnících:

      DTD- , die in einer ASCII Datei (ASCII) abgelegte Beschreibung der Struktur von Dokumenten, welche alle vom selben Typ sind. Eine DTD wird nach den Regeln der international anerkannten… … Universal-Lexikon

      DTD- může znamenat: Obsah 1 Média 2 Hudba 3 Sport 4 Technologie 4.1 Computing … Wikipedia

      DTD- steht fur: Inhaltsverzeichnis 1 Medien 2 Music 3 Technologien 3.1 Computer 3.1.1 Spiele … Deutsch Wikipedia

      Dtd- existuje pro: Darwin Digital Television, australische Fernsehstation Delta Delta Tau, americká americká studentská organizace Definice typu dokumentu, definice typu dokumentu … Deutsch Wikipedia

      DTD- (dē tē dēʹ) n. Sada pravidel pro označování dokumentu v SGML. * * * … Universalium

      DTD- (definice typu dokumentu) specifikace napsaná ve Standard Generalized Markup Language a obsahující informace o formátu konkrétního dokumentu (Počítače) … Anglický současný slovník

    K popisu takových značek „udělej si sám“ se používá XML systém. 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 (dokument typ Definice 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 ve verzích Internet Explorer 4 a 5.
    • XML schéma nebo jen XSD ( jazyk pro definici schématu XML) je doporučením W3C od roku 2001.

    Pojďme se blíže podívat na první dva z nich. Je diskutován třetí jazyk pro popis schématu laboratorní práce 11.

    Schéma DTD

    Schéma DTD poskytuje vzorek označení dokumentu, které specifikuje Dostupnost, objednat Následující A umístění Prvky a oni atributy v dokumentu XML.

    V rámci DTD lze obsahový model dokumentu XML popsat následovně:

    Každý živel Dokument může být jednoho z následujících typů:

    Obsah Syntax Komentář
    Data Obsahuje pouze textová data
    Další prvky Obsahuje pouze podřízené prvky
    smíšený Obsahuje kombinaci textových dat a podřízených prvků
    PRÁZDNÝ Neobsahuje nic
    ŽÁDNÝ Může obsahovat textová data nebo podřízené prvky

    Atributy, které jsou uvnitř značek dokumentu, jsou popsány samostatně pomocí syntaxe:

    Atribut v DTD může mít jeden ze tří typů:

    • Čára
    • Označený atribut
    • vyjmenovaný atribut

    Kromě typu atributu můžete také nastavit jeho modalitu:

    Vezměme si jako příklad popis atributů tětiva zadejte pro prvek popisující nějakou zprávu:

    Pokud tento prvek obsahuje atributy s převod, pak by jejich popis mohl vypadat například takto:

    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
    , (a, b, c) Důsledné používání položek seznamu
    | (a|b|c) Je použit jeden z členů seznamu
    datum Používá se pouze jeden prvek
    ? předmět? Volitelné použití (0 nebo 1krát)
    + odstavec+ Použité jednou nebo vícekrát
    * bratr* Použito nulakrát nebo vícekrát

    Jako příklad uvádíme schéma DTD, které popisuje strukturu elektronické schránky:

    Toto je další článek z cyklu „Základy XML“ a podíváme se v něm na základy popisu struktury XML data pomocí DTD. Je to docela starý způsob popisy XML struktury-dokumenty, ale stále se používá, takže to stejně zvážíme.

    Chci také podotknout, že toto skvělá cesta ukazují, jak XML kontroluje obsah dokumentu, jeho gramatiku atd. Novějšímu a pokročilejšímu způsobu popisu struktury dokumentů XML pomocí technologie XML Schema se budeme věnovat v příštím článku, ale nyní přejděme ke studiu XML DTD přímo.

    V tomto článku se podíváme na několik důležité body. To je to, co je XML DTD a k čemu slouží, pojďme si promluvit o nevýhodách DTD a také se naučíme, jak napsat vlastní DTD pro ověřování XML dokumentů. To vše bude jako obvykle prezentováno krok za krokem, co nejstručněji a nejjasněji, aby se šetřil váš čas.

    Takže, začněme.

    Co je DTD v XML a k čemu slouží?

    Stručně řečeno, DTD v XML se používá k ověření gramatiky dokumentu proti standardu (buď vývojáři nebo vám). To umožňuje parseru (procesoru) ve fázi zpracování určit, zda dokument splňuje naše požadavky. To znamená, že dokument XML se ověřuje.

    Potřeba zkontrolovat gramatiku dokumentů XML je následující:

    • Dokument XML nemusí být pro váš systém.
    • XML dokument může obsahovat nesprávná data.
    • Dokument XML může obsahovat chyby ve struktuře ().

    Takže jsme přišli na to, co je XML DTD a proč je potřeba. Nyní se pojďme rychle podívat na nevýhody DTD, než přejdeme k procesu vytváření souborů DTD pro ověřování dokumentů XML.

    Nevýhody XML DTD

    • Odlišný Syntaxe XML Jazyk. To způsobuje spoustu problémů, jako jsou problémy s kódováním nebo nemožnost dohledat chyby.
    • Žádná kontrola typu dat. V DTD je pouze jeden typ, řetězec.
    • Tady není žádný . Na dokument nelze mapovat dva nebo více DTD.

    to bylo krátký seznam nedostatky DTD, které jsou úspěšně opraveny v XML schématech, o kterých si povíme v dalších článcích.

    Deklarování prvků, atributů a entit v DTD. Modifikátory "*", "?", "+"

    DTD používají speciální deklarace a modifikátory k deklaraci prvků, atributů a entit. Abychom všemu podrobně porozuměli, uvažujme nejprve o teoretických informacích a poté ve druhé části článku přejdeme k praktickým příkladům.

    Definování prvku XML a posloupnosti prvků XML

    Prvek kniha obsahuje každý po jednom prvku názvu, autora, ceny a popisu.

    Alternativy prvků

    Prvek ceník obsahuje prvky title, price a jeden ze tří prvků na výběr – autor, společnost nebo vzorek.

    Prázdné prvky

    Element none musí být prázdný.

    Deklarace atributů

    Element pricelist může obsahovat dva atributy, atribut id a atribut name. V tomto případě je atribut id povinný, protože je zadáno #REQUIRED a atribut name je nepovinný (je zadáno #IMPLIED). CDATA zase říká obsluze, aby neanalyzovala obsah atributů.

    Definice entity

    Pokud je nalezena entita "", automaticky ji nahradí "Dmitrij Denisov".

    Modifikátory (vysvětlete opakování prvků)

    * - nula nebo mnoho.
    ? - nula nebo jedna.
    + - jeden nebo více.

    Prvek knihy může obsahovat jeden nebo více prvků knihy.

    Nyní se podívejme, jak to celé vypadá na praktičtějších příkladech.

    Vytvoření souboru DTD pro ověření XML dokumentu na příkladu ceníku knih

    Zachovejme stejný ceník knih, který používáme pro příklady téměř v každém článku o XML. Samotný XML dokument bude vypadat nějak takto.

    Kniha 1 &myname; Cena 1 Popis

    Výše uvedený příklad samozřejmě není konečným snem, ale pro příklad to bude stačit. Jak můžete vidět z příkladu, máme kořenový element ceníku, který obsahuje vnořené elementy knihy. V rámci prvků knihy jsou prvky názvu, autora, ceny a případně popisu, které mohou obsahovat některé textové údaje.

    Pro ověření tohoto ceníku můžeme použít následující dokument DTD.

    Nyní si vše podrobněji rozebereme.

    • - deklarujeme knihy kořenových prvků a v závorkách uvedeme, co může obsahovat. V tomto případě může obsahovat jeden nebo více prvků knihy (znaménko plus znamená jeden nebo více, viz výše).
    • - definovat prvek knihy. Prvek knihy může obsahovat jeden prvek názvu, jeden nebo více prvků autora (znaménko plus), jeden prvek ceny a jeden nebo žádný prvek popisu (otazník).
    • - definovat prvek title. Jako obsah prvku zadejte #PCDATA. To znamená, že analyzátor musí analyzovat, co je uvnitř tohoto prvku.
    • Podobně definujeme prvky autor, cena, popis.
    • - definovat podstatu. Nejprve napíšeme samotnou entitu a poté v uvozovkách to, co se zobrazí na jejím místě. Ve výchozím nastavení jsou v XML definovány pouze 3 entity. Je to víc (">" -<), меньше («<» — >) a ampersand ("&" - &). Pokud chcete, můžete pomocí této metody vytvořit neomezený počet entit. Jako významy mohou být nejen slova, ale i celé věty významného množství.
    Připojení DTD k ověření dokumentů XML

    Deklarativní způsob

    Tato metoda se používá velmi zřídka, protože její podstatou je vytvářet soběstačné dokumenty. To znamená, že dokument bude okamžitě obsahovat DTD i XML. Následující konstrukce se používá k přidání DTD do XML.

    kde místo DOCUMENT uvedeme kořenový prvek XML dokumentu.

    Pro názornost uvažujme příklad hotového samostatného dokumentu s deklarativním způsobem, jak zahrnout DTD.

    ]>

    Externí definice DTD - Připojení dokumentu DTD

    podstata tato metoda je připojit soubor DTD k dokumentu XML pomocí následující konstrukce.

    kde DOCUMENT je kořenový prvek dokumentu XML.
    file.dtd je odkaz na soubor DTD.

    Pro jasnost zvažte následující příklad.

    XML dokument

    Tímto je tento článek uzavřen. Probrali jsme všechny hlavní body při práci s XML DTD a doufám, že se mi podařilo vše srozumitelně vysvětlit. Pokud si nechcete nechat ujít vydání dalších XML a XSLT tutoriálů, doporučuji přihlásit se k odběru newsletteru pomocí formuláře níže.

    To je vše. Hodně štěstí a úspěchů při učení XML!