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:

[e-mail chráněný]

[e-mail chráněný]

Re:

[e-mail chráněný]

[e-mail chráněný]

Připomenout

[e-mail chráněný]

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.

Výpis 1: Fragment dokumentu XML
123456789 J123456
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

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ů:

  • Textový řetězec
  • Textový řetězec smíchaný s jiným podřízeným prvkem
  • Sada dětí

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.

Výpis 4: Cílové a zdrojové jmenné prostory

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.

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ů

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.

Jednoduché typy

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 .

Jednoduché, nevnořené prvky mají jednoduchý typ

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.

Výpis 7: Některé jednoduché typy prvků

Prvky s atributy musí být komplexního typu

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ýpis 8: Prvek komplexního typu

Prvky obsahující vnořené prvky musí být komplexního typu

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.

Tabulka 1: Porovnání komplexních datových typů v DTD a XML Schema

XML dokument
Skvělé XML <Title> <Author>Skvělý chlap</Author> </Book> </span><h5>DTD</h5><span> <!ELEMENT Book (Title, Author)> <!ELEMENT Title (#PCDATA)> <!ELEMENT Author (#PCDATA)> </span><h5>Schéma XML</h5><span> <element name="Book" type="BookType"/> <complexType name="BookType"> <element name="Title" type="string"/> <element name="Author" type="string"/> </complexType> </span><h5>Výpis 10: Skrytí BookType jako místního typu</h5><span> <element name="Title" type="string"/> <element name="Author" type="string"/> <element name="Book"> <complexType> <element ref="Title"/> <element ref="Author"/> </complexType> </element> </span><h2>Vyjádření komplexních omezení na prvky</h2><p>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.</p><h5>Výpis 11: Vyjádření omezení typů prvků</h5><span> <element name="Title" type="string"/> <element name="Author" type="string"/> <element name="Book"> <complexType> <element ref="Title"/> <element ref="Author"/> </complexType> </element> </span><p>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.</p><h5>Výpis 12: Označení, že prvek musí mít definovány všechny typy</h5><span> <xsd:element name="Title" type="string"/> <xsd:element name="Author" type="string"/> <xsd:element name="Book"> <xsd:complexType> <xsd:all> <xsd:element ref="Tile"/> <xsd:element ref="Author"/> </xsd:all> </xsd:complexType> </xsd:element> </span><h2>Shrnutí</h2><p>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ů:</p><ul><li>Schéma XML poskytuje komplexní podporu pro dědičnost typů, což vám umožňuje znovu použít dříve definované struktury. Toto použití se nazývá <i>aspekty</i>. Můžete odvodit nové typy, které představují menší podmnožinu hodnot jiných typů, například definovat podmnožinu pomocí výčtu, rozsahu nebo shody vzoru. V jednom z příkladů v tomto článku byl typ ProductCode definován pomocí aspektu vzoru. V podtypu můžete také přidat nové prvky a atributy k základnímu typu.</li><li>Několik mechanismů vám umožňuje řídit celkovou definici podtypu nebo jej nahradit v konkrétním dokumentu. Můžete například určit, že InvoiceType (typ čísla faktury) nemůže obsahovat podtypy, což znamená, že nikdo nemůže definovat novou verzi InvoiceType . Můžete také určit, že v konkrétním kontextu pro typ Kód produktu nemohou existovat substituce podtypů.</li><li>Kromě použití podtypů je možné definovat ekvivalentní typy, to znamená, že hodnota jednoho typu může být nahrazena hodnotou jiného.</li><li>Schéma XML poskytuje mechanismus pro nahrazení prvku nebo typu jeho prohlášením za abstraktní.</li><li>Pro větší pohodlí můžete definovat a pojmenovat skupiny atributů nebo prvků. To umožňuje jejich opětovné použití v následujících hovorech.</li><li>Schéma XML poskytuje tři prvky – appInfo, dokumentaci a anotace – pro použití komentářů jak lidmi (dokumentace), tak aplikacemi (appInfo).</li><li>Jedinečná omezení můžete vyjádřit na základě specifických atributů podřízených prvků.</li> </ul><p>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.</p> <p>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.</p> <p>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.</p> <p>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:</p><p> <?xml version="1.0" standalone="yes" ?> <! DOCTYPE journal SYSTEM "journal.dtd"> ... </p><p>Uvnitř dokumentu jsou deklarace DTD zahrnuty takto:</p><p> ... <! DOCTYPE journal [ <!ELEMENT journal (contacts, issues, authors)> ... ]> ... </p><p>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 <i>standalone="ano"</i>, pak program načte zadaný externí soubor a odtud se načtou pravidla v něm obsažená. Pokud je atribut <i>samostatný</i> záležitosti <i>"Ano</i>“, pak bude použití externích popisů DTD zakázáno.</p> <h2>Definice prvku</h2> <p>Prvek v DTD je definován pomocí úchytu! <b>ŽIVEL</b>, který určuje název prvku a strukturu jeho obsahu.</p> <p>Například pro prvek <flower>lze definovat následující pravidlo:</p><p> <!ELEMENT flower PCDATA> </p><p>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.</p> <p>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ř. <red/>), druhým je, že obsah prvku není konkrétně popsán.</p> <p>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 +, *, ? :</p><p> <!ELEMENT issue (title, author+, table-of-contents?)> </p><p>Tento příklad určuje, že uvnitř prvku <issue>prvky title, author a table-of-contents musí být definovány, přičemž prvek title je povinný prvek a může se objevit pouze jednou, prvek autor se může objevit vícekrát a prvek table-of-contents je volitelný, tj. může chybět. Pokud existuje několik možností pro obsah definovaného prvku, měly by být odděleny symbolem "|". :</p><p> <!ELEMENT flower (PCDATA | title)*> </p><p>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.</p> <p>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> <p>Příklad platného XML dokumentu:</p><p> <?xml version="1.0"?> <! DOCTYPE journal [ <!ELEMENT contacts (address, tel+, email?)> <!ELEMENT address (street, appt)> <!ELEMENT street PCDATA> <!ELEMENT appt (PCDATA | EMPTY)*> <!ELEMENT tel PCDATA> <!ELEMENT email PCDATA> ]> ... <contacts> <address> <street>Marks avenue</street> <appt id="4"> </address> <tel>12-12-12</tel> <tel>46-23-62</tel> <email>info@j.com</email> </contacts> </p><h2>Definování atributů</h2> <p>Seznamy atributů prvků jsou definovány pomocí klíčového slova! <b>ATTLIST</b>. Uvnitř jsou uvedeny názvy atributů, typy jejich hodnot a další parametry. Například pro prvek <article>Lze definovat následující atributy:</p><p> <!ATTLIST article id ID #REQUIRED about CDATA #IMPLIED type (actual | review | teach) "actual" "" > </p><p>V tomto příkladu pro prvek <i>článek</i> jsou definovány tři atributy: <i>id, o</i> A <i>typ</i>, které mají typy ID (identifikátor), CDATA a seznam možných hodnot, resp. Existuje celkem šest možných typů hodnot atributů:</p> <ul><li>CDATA - obsah dokumentu může být libovolný znakový údaj</li> <li>ID – definuje jedinečný identifikátor prvku v dokumentu</li> <li>IDREF(IDREFS) – označuje, že hodnotou atributu by měl být název (nebo několik takových názvů, ve druhém případě oddělených mezerami) jedinečného identifikátoru prvku definovaného v tomto dokumentu</li> <li>ENTITY(ENTITIES) - hodnota atributu musí být název (nebo seznam názvů, pokud je použit ENTITIES) komponenty (definice makra) definované v dokumentu</li> <li>NMTOKEN (NMTOKENS) - obsah prvku může být pouze jedno slovo (tj. tento parametr je omezenou variantou CDATA)</li> <li>Seznam platných hodnot - definuje seznam hodnot, které může mít tento atribut.</li> </ul><p>V definici atributu můžete také použít následující parametry:</p> <ul><li>#REQUIRED - definuje povinný atribut, který musí být nastaven na všech prvcích tohoto typu</li> <li>#IMPLIED – atribut je volitelný</li> <li>#FIXED "value" - označuje, že atribut musí mít pouze zadanou hodnotu, samotná definice atributu však není povinná, ale během procesu analýzy bude jeho hodnota v každém případě předána programu analyzátoru</li> <li>Hodnota – nastavuje výchozí hodnotu atributu</li> </ul><h2>Definování komponent (definice maker)</h2> <p>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:</p><p> <!ENTITY hello " Мы рады приветствовать Вас!" > </p><p>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 <i>"Rádi vás vítáme"</i></p> <p>Obecně lze v rámci DTD definovat tři typy definic maker:</p> <p><b>Interní definice maker</b>- 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 &</p> <p>V XML je pět předdefinovaných interních znakových konstant:</p> <ul><li>< - символ "<"</li> <li>> - symbol ">"</li> <li>& - symbol "&"</li> <li>" - symbol apostrofu """</li> <li>" - znak dvojitých uvozovek """</li> </ul><p><b>Externí definice maker</b>- 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</p><p> <!ENTITY logotype SYSTEM "/image.gif" NDATA GIF87A> </p><p><b>Definice makra pravidla</b>- 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</p> <p>Například pro následující fragment dokumentu:</p><p> <!ELEMENT name (PCDATA)> <!ELEMENT title (PCDATA | name)*> <!ELEMENT author (PCDATA | name)*> <!ELEMENT article (title, author)*> <!ELEMENT book (title, author)*> <!ELEMENT bookstore (book | article)*> <!ELEMENT bookshelf (book | article)*> </p><p>Můžete použít kratší formulář:</p><p> <!ELEMENT name (PCDATA)> <! ENTITY %names "PCDATA | name"> <!ELEMENT article (%names;)*> <!ELEMENT book (%names;)*> <!ENTITY %content "book | article"> <!ELEMENT bookstore (%content;)*> <!ELEMENT bookshelf (%content;)*> </p><p>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:</p><p> <!ENTITY %itemattr "id ID #IMPLIED src CDATA"> <!ENTITY %bookattr "ISDN ID #IMPLIED type CDATA"> <!ENTITY %artattr " size CDATA"> <!ELEMENT book (title, author,content)*> <!ATTLIST book %itemattr %bookattr;> <!ELEMENT article (title, author, content)*> <!ATTLIST article %itemattr %artattr;> </p><h2>Typování dat</h2> <p>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 <last-modified>10.10.98</last-modified>, pak chceme mít jistotu, že v dokumentu na tomto místě bude řetězec představující datum, nikoli číslo nebo libovolná posloupnost znaků. Pomocí datového typování můžete vytvářet prvky, jejichž hodnoty lze použít například jako parametry v dotazech SQL. V tomto případě musí klientský program vědět, ke kterému datovému typu patří aktuální hodnota prvku, a pokud se shoduje, vygeneruje SQL dotaz.</p> <p>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:</p><p> <!ELEMENT counter (PCDATA)> <!ATTLIST counter data_long CDATA #FIXED "LONG"> </p><p>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.</p> <p>Zde je příklad dokumentu XML, který definuje a používá několik prvků s různými datovými typy:</p><p> <!ELEMENT price (PCDATA)> <!ATTLIST price data_currency CDATA #FIXED "CURRENCY"> <!ELEMENT rooms_num (PCDATA)> <!ATTLIST rooms_num data_byte CDATA #FIXED "BYTE"> <!ELEMENT floor (PCDATA)> <!ATTLIST floor data_byte CDATA #FIXED "INTEGER"> <!ELEMENT living_space (PCDATA)> <!ATTLIST living_space data_float CDATA #FIXED "FLOAT"> <!ELEMENT counter (PCDATA)> <!ATTLIST counter data_long CDATA #FIXED "LONG"> <!ELEMENT is_tel (PCDATA)> <!ATTLIST is_tel data_bool CDATA #FIXED "BOOL"> <!ELEMENT house (rooms_num, floor,living_space, is_tel, counter, price)> <!ATTLIST house id ID #REQUIED> ... <house id="0"> <rooms_num>5</rooms_num> <floor>2</floor> <living_space>32.5</living_space> <is_tel>věrný</is_tel> <counter>18346</counter> <price>34 rublů. 28 k.</price> </house> ... </p><p>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.</p> <p>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.</p> <p>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ů.</p> <p>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.</p> <h2>Syntax</h2> <p>Základní syntaxe pro deklarování atributů DTD je následující:</p><p> <!ATTLIST element-name attribute-name attribute-type attribute-value> </p><p>Ve výše uvedené syntaxi</p> <ul><p>Spusťte atributy DTD pomocí<! Ключевое слово ATTLIST если элемент содержит атрибут.</p> <p><b>název-prvku</b> určuje název prvku, na který je atribut aplikován.</p> <p><b>atribut-name</b> určuje název atributu, který je součástí prvku name.</p> <p><b>atribut-type</b> definuje typ atributů. Více o tom probereme v následujících částech.</p> <p><b>atribut s hodnotou</b> má pevnou hodnotu, kterou musí atributy specifikovat. Více o tom probereme v následujících částech.</p> </ul><h2>Příklad</h2> <p>Níže je jednoduchý příklad deklarování atributu v DTD:</p><p> <?xml version = "1.0"?> <!DOCTYPE address [ <!ELEMENT address (name)> <!ELEMENT name (#PCDATA)> <!ATTLIST name id CDATA #REQUIRED> ]> <address> <name id="123">Tanmay Patil</name> </address> </p><p>Pojďme si projít výše uvedený kód:</p> <ul><p>Začněte deklarací XML s následujícím příkazem:</p><p> <?xml version = "1.0"?></p> <p>Bezprostředně za hlavičkou XML je deklarace typu dokumentu, běžně nazývaná DOCTYPE:</p><p> <!DOCTYPE address [ </p><p>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 (!).</p> <p>Po těle DTD. Zde jsme deklarovali prvek a atribut:</p> </ul> <!ELEMENT address (name)> <!ELEMENT name (#PCDATA)> <p><i>Průkaz totožnosti</i> atribut pro <i>jméno</i> prvek je definován jako:</p><p> <!ATTLIST name id CDATA #REQUIRED> </p><p>Zde je typ atributu <i>CDATA</i> a jeho význam <i>#POŽADOVANÝ</i>.</p> <h2>Pravidla deklarace atributů</h2> <ul><p>Všechny atributy použité v dokumentu XML musí být deklarovány v definici typu dokumentu (DTD) pomocí deklarace seznamu atributů.</p> <p>Atributy se mohou objevit pouze v počátečních nebo prázdných značkách.</p> <p>Klíčové slovo ATTLIST musí být v horní části písmen</p> <p>V seznamu atributů pro daný prvek nebudou povoleny žádné dvojité názvy atributů.</p> </ul><h2>Typy atributů</h2> <p>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í:</p> <ul><p>Typ řetězce</p> <p>Typy tokenizace</p> <p>Uvedené typy</p> </ul><p>Následující tabulka obsahuje souhrn různých typů atributů:</p> <table class="table table-bordered"><tr><th>Typ</th> <th>Popis</th> </tr><tr><td>CDATA</td> <td>Znaková data CDATA (text a žádné zvýšení ceny). <i>Typ atributu řetězce</i>. </td> </tr><tr><td>Průkaz totožnosti</td> <td>Toto je jedinečný atributový označení. Nemělo by se objevit více než jednou. <i>Typ atributu Tokenizováno</i>. </td> </tr><tr><td>IDREF</td> <td>Používá se k odkazování na identitu jiného prvku. Používá se k navázání spojení mezi prvky. <i>Typ atributu Tokenizováno</i>. </td> </tr><tr><td>IDREFS</td> <td>Používá se k odkazování na více ID. <i>Typ atributu Tokenizováno</i>. </td> </tr><tr><td>REALITA</td> <td>V dokumentu představuje vnější realitu. <i>Typ atributu Tokenizováno</i>. </td> </tr><tr><td>REALITA</td> <td>Představuje seznam vnějších realit v dokumentu. <i>Typ atributu Tokenizováno</i>. </td> </tr><tr><td>NMTOKEN</td> <td>Je podobný CDATA a atribut value se skládá z platného názvu XML. <i>Typ atributu Tokenizováno</i>. </td> </tr><tr><td>NMTOKENS</td> <td>Je podobný CDATA a atribut value se skládá ze seznamu platného názvu XML. <i>Typ atributu Tokenizováno</i>. </td> </tr><tr><td>OZNAČENÍ</td> <td>Prvek bude odkazován na deklarovaný zápis v dokumentu DTD. <i>Vyjmenovaný typ atributu</i>. </td> </tr><tr><td>Označení</td> <td>Umožňuje vám definovat konkrétní seznam hodnot, kde se jedna z hodnot musí shodovat. <i>Vyjmenovaný typ atributu</i>. </td> </tr></table><h2>Deklarování atributu hodnotou</h2> <p>V rámci každé deklarace atributu musíte definovat, jak se hodnota zobrazí v dokumentu. Můžete definovat atribut if: then</p> <ul><p>může mít výchozí hodnotu</p> <p>může mít pevnou hodnotu</p> <li><p>znamená</p> </ul><h3>Automaticky přijímané hodnoty</h3> <p>Obsahuje výchozí hodnotu. Hodnoty mohou být uzavřeny v jednoduchých uvozovkách (") nebo dvojitých uvozovkách (")</p> <b>Syntax</b> <p>Následující syntaxe hodnoty:</p><p> <!ATTLIST element-name attribute-name attribute-type "default-value"> </p><p>kde jsou výchozí hodnoty <i>význam</i> konkrétní atribut s hodnotou.</p> <b>Příklad</b> <p>Následuje jednoduchý příklad deklarace atributu s automaticky přijímanou hodnotou:</p><p> <?xml version = "1.0"?> <!DOCTYPE address [ <!ELEMENT address (name)> <!ELEMENT name (#PCDATA)> <!ATTLIST name id CDATA "0"> ]> <address> <name id="123">Tanmay Patil</name> </address> </p><p>V tomto příkladu máme prvek <i>jméno</i> S <i>průkaz totožnosti</i> atribut, jehož automaticky přijímaná hodnota <i>0 </i>. Automaticky předpokládaná hodnota je obsažena v dvojitých uvozovkách.</p> <h3>PEVNÉ hodnoty</h3> <p>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í.</p> <b>Syntax</b> <p>Následuje syntaxe pevné hodnoty:</p><p> <!ATTLIST element-name attribute-name attribute-type #FIXED "value" > </p><p>kde #FIXED je specifický atribut s hodnotou.</p> <b>Příklad</b> <p>Následuje jednoduchý příklad deklarace atributu s hodnotou FIXED:</p><p> <?xml version="1.0"?> <!DOCTYPE address [ <!ELEMENT address (company)*> <!ELEMENT company (#PCDATA)> <!ATTLIST company name NMTOKEN #FIXED "tutorialspoint"> ]> <address> <company name="tutorialspoint"></company> </address> </p><p>V tomto příkladu jsme použili klíčové slovo #FIXED, kde znamená, že hodnota "tutorialspoint" je jedinou hodnotou pro <i>jméno</i> atribut <company>živel. Pokud se poté pokusíme změnit atribut s hodnotou, zobrazí se chyba.</p> <p>Následující neplatné DTD:</p><p> <?xml version="1.0"?> <!DOCTYPE address [ <!ELEMENT address (company)*> <!ELEMENT company (#PCDATA)> <!ATTLIST company name NMTOKEN #FIXED "tutorialspoint"> ]> <address> <company name="abc">jsme bezplatná online výuková fakulta</company> </address> </p><h3>POVINNÉ hodnoty</h3> <p>Pokud chcete určit, že atribut je povinný, použijte klíčové slovo #REQUIRED.</p> <b>Syntax</b> <p>Podle syntaxe #REQUIRED:</p><p> <!ATTLIST element-name attribute-name attribute-type #REQUIRED> </p><p>kde #REQUIRED je konkrétní typ atributu.</p> <b>Příklad</b> <p>Následuje jednoduchý příklad deklarace atributu DTD s klíčovým slovem #REQUIRED:</p><p> <?xml version = "1.0"?> <!DOCTYPE address [ <!ELEMENT address (name)> <!ELEMENT name (#PCDATA)> <!ATTLIST name id CDATA #REQUIRED> ]> <address> <name id="123">Tanmay Patil</name> </address> </p><p>V tomto příkladu jsme to určili pomocí klíčového slova #REQUIRED <i>průkaz totožnosti</i> atribut musí být uveden <i>jmenný prvek-</i> jméno</p> <h3>IMPLIKOVANÉ významy</h3> <p>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 <i>implicitní</i>. Klíčové slovo #IMPLIED se používá k definování atributu jako <i>implicitní</i>.</p> <b>Syntax</b> <p>Podle syntaxe #IMPLIED:</p><p> <!ATTLIST element-name attribute-name attribute-type #IMPLIED> </p><p>kde #IMPLIED je konkrétní typ atributu.</p> <b>Příklad</b> <p>Po jednoduchém příkladu #IMPLIED</p><p> <?xml version = "1.0"?> <!DOCTYPE address [ <!ELEMENT address (name)> <!ELEMENT name (#PCDATA)> <!ATTLIST name id CDATA #IMPLIED> ]> <address> <name /> </address> </p><p>V tomto příkladu jsme použili klíčové slovo #IMPLIED, protože nechceme specifikovat žádné atributy, které mají být zahrnuty <i>jméno</i>živel. Je to volitelné.</p> <p>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> <p>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 „ <Z>Ahoj!</Z>“, pak bude náš dokument zcela správný, ale prohlížeč jej ignoruje. Proč? Protože prohlížeč neví nic o tom, o jaký druh „Z“ se jedná. A pokud zkontrolujeme platnost našeho dokumentu pomocí validátoru, pak nebude dokument jako takový rozpoznán. Jak o tom validátor ví a na základě čeho takový verdikt vynesl?</p> <p>Platnost se kontroluje pomocí definice typu dokumentu (DTD). Například pro "striktní" HTML to vypadá takto.</p> <p>DTD lze popsat jak uvnitř dokumentu, tak v <a href="https://innovakon.ru/cs/internet/kak-pomenyat-rasshirenie-faila-v-windows-xp-mery-predostorozhnosti-pri.html">samostatný soubor</a>(podobně jako CSS: vestavěné a zásuvné styly).</p> <h3>DTD prohlášení</h3> <p>Deklarace DTD se umístí před první (kořenový) prvek dokumentu, počínaje sekvencí "<!DOCTYPE » и заканчивается символом « > ».</p> <p>Interní DTD je popsáno takto:</p><p> <!DOCTYPE catalog > </p><p>Mezi <a href="https://innovakon.ru/cs/services/znachenie-v-kvadratnyh-skobkah-css3-css-psevdo-elementy-i.html">hranaté závorky</a> obsahuje obsah DTD, tzv <i>vnitřní podmnožina</i>, Například:</p><p> <!DOCTYPE catalog [ <!ELEMENT someelement (#PCDATA)> ] > </p><p>Pokud je DTD umístěno v samostatném souboru (obvykle s příponou .dtd), je jeho deklarace v dokumentu zapsána takto:</p><p> <!DOCTYPE catalog SYSTEM "catalog.dtd"> </p><p>Podle toho jsou všechna pravidla zapsána v tomto souboru, tzv <i>externí podmnožina</i>.</p> <p>Název uvedený za slovem „DOCTYPE“ (v našem případě „katalog“) se musí shodovat s názvem <a href="https://innovakon.ru/cs/phone/dannyi-fail-soderzhit-nastraivaemye-elementy-xml-otkryt-fail-xml-onlain.html">kořenový prvek</a>. To znamená, že dokument XML by měl být něco takového:</p><p> <?xml version="1.0"?> <!DOCTYPE catalog SYSTEM "catalog.dtd"> <catalog> <someelement>Ahoj světe!</someelement> </catalog> </p><p>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í:</p><p> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> </p><p>Vnitřní a vnější podmnožiny lze zadat současně (opět podobně jako CSS):</p><p> <!DOCTYPE catalog SYSTEM "catalog.dtd"[ <!ELEMENT someelement (#PCDATA)> ] > </p><p>Zde se nejprve přečte obsah souboru „catalogue.dtd“ a poté obsah uvedený v hranatých závorkách.</p> <h3>Prvky dokumentu</h3> <p>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:</p><p> <ELEMENT book (#PCDATA)> </p><p>Pokud má prvek podřízené prvky, zapíše se takto:</p><p> <!ELEMENT book (title)> </p><p>což odpovídá dokumentu:</p><p> <book> <title /> </book> </p><p>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í:</p><p> <!ELEMENT book (title, author)> <!ELEMENT title (#PCDATA)> <!ELEMENT author (#PCDATA)> </p><p>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.</p> <p>Pomocí následujícího <a href="https://innovakon.ru/cs/phone/simvoly-dlya-vk-specialnye-simvoly-vkontakte.html">speciální znaky</a> můžete určit kvantitativní přítomnost prvku:</p> <ul><li>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)</li> <li>Symbol „+“ za prvkem znamená, že prvek se může objevit jednou nebo vícekrát (od 1 do + nekonečna)</li> <li>Symbol "? ", za prvkem, znamená, že prvek může buď chybět, nebo může být přítomen pouze jednou (0 nebo 1)</li> </ul> <!ELEMENT book (title, author)> ... <!ELEMENT book (title*, author)> ... <!ELEMENT book (title+, author)> ... <!ELEMENT book (title?, author)> <p>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 " | ":</p><p> <!ELEMENT book (title | author)> </p><p>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. <a href="https://innovakon.ru/cs/services/prosteishaya-set-iz-dvuh-kompyuterov-sovmestnoe-ispolzovanie.html">Sdílení</a> se nazývá text a prvky <i>smíšený obsah</i>. Při deklarování smíšeného obsahu musí být nejprve specifikováno „PCDATA“:</p><p> <!ELEMENT book (#PCDATA | title | author)> </p><p>Následující fragment dokumentu je platný pro výše uvedený příklad:</p><p> <book> <title /> </book> <book> <author /> </book> <book>Žádná data</book> </p><p>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í):</p><p> <!ELEMENT book (#PCDATA | (title, author+, pubyear?))> <!ELEMENT disc (#PCDATA | title)*> </p><p>Tomuto příkladu odpovídá následující fragment dokumentu XML:</p><p> <disc /> <book> <title /> <author /> <author /> </book> <book>Žádná data</book> </p><p>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í <a href="https://innovakon.ru/cs/internet/parser-klyuchevyh-slov-onlain-yandeks-podbor-klyuchevyh-slov-v-key.html">klíčové slovo</a>"PRÁZDNÝ":</p><p> <!ELEMENT photo EMPTY> </p><p>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ý.</p> <h3>Atributy prvku</h3> <p>Prvky v XML dokumentu mohou mít atributy, které se zapisují jako "název=hodnota" v úvodní resp <a href="https://innovakon.ru/cs/settings/html-teg-pustaya-yacheika-tablicy-atributy-align-i-valign-uralskii-gosudarstvennyi.html">prázdné značky</a>. Deklarace obecných atributů <a href="https://innovakon.ru/cs/services/izvini-no-ty-vybral-ne-tot-smartfon-dizain-i-raspolozhenie-elementov-kak.html">konkrétní prvek</a> začíná klíčovým slovem "ATTLIST" následovaným názvem <a href="https://innovakon.ru/cs/services/sintaksis-css-nazvaniya-identifikatorov-i-klassov-i-zadat-stil-dlya.html">tohoto prvku</a> a deklarace samotných atributů:</p><p> <!ELEMENT title (#PCDATA)> <!ATTLIST title id CDATA #REQUIRED stock CDATA #IMPLIED> </p><p>Klíčové slovo "POŽADOVÁNO" označuje, že atribut je povinný. Klíčové slovo "IMPLIED" na druhé straně říká, že atribut je volitelný.</p> <p>Atributy mohou mít seznam povolených hodnot:</p><p> <!ATTLIST title readonly (yes|no) #REQUIRED> </p><p>Výchozí hodnotu lze také nastavit:</p><p> <!ATTLIST title readonly (yes|no) #REQUIRED "yes">pubyear CDATA #IMPLIED "2007"></p><p>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“:</p><p> <!ATTLIST title copyright <strong>#OPRAVENO "udvikler"></p><p>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-документе!</p> <p>Kromě typu CDATA mohou mít atributy následující typy:</p> <ul><li>NMTOKEN - může obsahovat pouze písmena, číslice, ". ", " - ", " _ " A " : "</li> <li>NMTOKENS – může obsahovat stejné znaky jako „NMTOKENS“ plus znaky mezery, konce řádku, posunu řádku a tabulátoru</li> </ul> <!ATTLIST title id CDATA #REQUIRED stock NMTOKEN #IMPLIED publisher NMTOKENS #IMPLIED> <p>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á:</p><p> <!ELEMENT book (title, author)> <!ELEMENT title (#PCDATA)> <!ELEMENT author (#PCDATA)> <!ATTLIST title id ID #REQUIRED stock CDATA #IMPLIED> <!ATTLIST author id ID #REQUIRED city CDATA #IMPLIED> </p><p>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“:</p><p> <!ELEMENT book (title+, author, year, publisher)> <!ELEMENT title (#PCDATA)> <!ELEMENT author (#PCDATA)> <!ELEMENT year (#PCDATA)> <!ELEMENT publisher (#PCDATA)> <!ATTLIST title id ID #REQUIRED> <!ATTLIST author id ID #REQUIRED> <!ATTLIST year ref IDREF #REQUIRED> <!ATTLIST publisher from IDREFS #REQUIRED> </p><p>V XML dokumentu to bude vypadat takto:</p><p> <book> <title id="t1" /> <title id="t2" /> <title id="t3" /> <author id="a1" /> <year ref="t2" /> <publisher from="t1 t2 a1" /> </book> </p><h3>Prohlašující subjekty</h3> <p>Kromě prvků a jejich atributů můžeme definovat <i>esence</i>, napsané pomocí klíčového slova „ENTITY“:</p><p> <!ENTITY name "SuperMegaMaster"> </p><p> <userName>&name;</userName> </p><p>V důsledku toho bude název entity „name“ nahrazen její hodnotou, v našem případě „SuperMegaMaster“.</p> <p>A abychom naše štěstí dokončili, musíme dodat, že atributy prvků mohou mít podobné entity jako významy – <i>entity-atributy</i>. 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:</p><p> <!DOCTYPE catalog [ <!ENTITY list SYSTEM "companyList.html" NDATA parse> <!ELEMENT catalog (user+)> <!ELEMENT user (name)> <!ATTLIST user company ENTITY #REQUIRED> <!ELEMENT name (#PCDATA)> ] > </p><p>Ve výše uvedeném příkladu je deklarována entita "seznam", která odkazuje na <a href="https://innovakon.ru/cs/services/izmenenie-vneshnego-vida-teksta-v-dokumente-raznica-mezhdu.html">externí dokument</a>"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:</p><p> <catalog> <user company="list"> <name>SuperMegaMaster</name> </user> </catalog> </p><p>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 <a href="https://innovakon.ru/cs/services/brauzery-osnovnye-vozmozhnosti-i-funkcii-sintaksicheskii-i.html">analyzátor</a> 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ě:</p><p> <!NOTATION parse SYSTEM "iexlorer"> <!ENTITY list SYSTEM "companyList.html" NDATA parse> </p><p>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“.</p> <script type="text/javascript"> <!-- var _acic={dataProvider:10};(function(){var e=document.createElement("script");e.type="text/javascript";e.async=true;e.src="https://www.acint.net/aci.js";var t=document.getElementsByTagName("script")[0];t.parentNode.insertBefore(e,t)})() //--> </script><br> <br> <script>document.write("<img style='display:none;' src='//counter.yadro.ru/hit;artfast_after?t44.1;r"+ escape(document.referrer)+((typeof(screen)=="undefined")?"": ";s"+screen.width+"*"+screen.height+"*"+(screen.colorDepth? screen.colorDepth:screen.pixelDepth))+";u"+escape(document.URL)+";h"+escape(document.title.substring(0,150))+ ";"+Math.random()+ "border='0' width='1' height='1' loading=lazy loading=lazy>");</script> </div> <div class="single-popular"> <div class="single-popular-tit col-lg-12">Oblíbené v kategorii:</div> <div class="single-popular-item col-lg-6 col-md-6 col-sm-6 col-xs-6"> <div class="single-popular-item-wrp"> <img width="150" height="120" src="/uploads/5be8b76667696c4cd63a8c38979b50af.jpg" class="attachment-sm-widget size-sm-widget wp-post-image" alt="Jak sloučit vrstvy ve Photoshopu do jedné nebo je spojit do skupiny Jak zkombinovat několik vrstev ve Photoshopu"/ loading=lazy loading=lazy> <div class="single-popular-item-tit">Jak sloučit vrstvy ve Photoshopu do jedné nebo je spojit do skupiny...</div> <a href="https://innovakon.ru/cs/settings/sposoby-obedineniya-sloev-v-fotoshope-kak-obedinit-sloi-v-fotoshope-v.html" rel="bookmark" title="Jak sloučit vrstvy ve Photoshopu do jedné nebo je spojit do skupiny Jak zkombinovat několik vrstev ve Photoshopu">číst</a> <div class="clr"> </div> </div> </div> <div class="single-popular-item col-lg-6 col-md-6 col-sm-6 col-xs-6"> <div class="single-popular-item-wrp"> <img width="150" height="120" src="/uploads/33b72e60e1d3066a9663f391221dc014.jpg" class="attachment-sm-widget size-sm-widget wp-post-image" alt="Přenos kontaktů do nového telefonu Android"/ loading=lazy loading=lazy> <div class="single-popular-item-tit">Přenos kontaktů do nového telefonu Android</div> <a href="https://innovakon.ru/cs/phone/perenos-kontaktov-na-novyi-telefon-android-android-prilozheniya.html" rel="bookmark" title="Přenos kontaktů do nového telefonu Android">číst</a> <div class="clr"> </div> </div> </div> <div class="single-popular-item col-lg-6 col-md-6 col-sm-6 col-xs-6"> <div class="single-popular-item-wrp"> <img width="150" height="120" src="/uploads/ff504b14456f4702a94368a161811b1d.jpg" class="attachment-sm-widget size-sm-widget wp-post-image" alt="Samsung Galaxy se restartuje sám – Solutions Galaxy note 4 se restartuje sám"/ loading=lazy loading=lazy> <div class="single-popular-item-tit">Samsung Galaxy se sám restartuje – řešení Galaxy Note...</div> <a href="https://innovakon.ru/cs/internet/esli-xiaomi-postoyanno-perezagruzhaetsya-samsung-galaksi-perezagruzhaetsya-sam-po.html" rel="bookmark" title="Samsung Galaxy se restartuje sám – Solutions Galaxy note 4 se restartuje sám">číst</a> <div class="clr"> </div> </div> </div> <div class="single-popular-item col-lg-6 col-md-6 col-sm-6 col-xs-6"> <div class="single-popular-item-wrp"> <img width="150" height="120" src="/uploads/242e09224609f2b7cbd6b5b9f2adc411.jpg" class="attachment-sm-widget size-sm-widget wp-post-image" alt="Klíčové vlastnosti Kaspersky Rescue Disk"/ loading=lazy loading=lazy> <div class="single-popular-item-tit">Klíčové vlastnosti Kaspersky Rescue Disk</div> <a href="https://innovakon.ru/cs/rates/skachat-zagruzochnyi-disk-kasperskogo-osnovnye-vozmozhnosti-kaspersky-rescue.html" rel="bookmark" title="Klíčové vlastnosti Kaspersky Rescue Disk">číst</a> <div class="clr"> </div> </div> </div> <div class="clr"></div> </div> </div>  <div class="sidebar col-lg-3 col-md-4 col-sm-12"> <div class="sidebar-wrp"> <div class="sidebar-wrp-title">Nejnovější články</div> <div class="sidebar-wrp-des"> <div class="last-post col-lg-12 col-md-12 col-sm-6 col-xs-6"> <div class="last-post-img"> <img width="60" height="48" src="/uploads/d93303aadea847492ee52538b585df87.jpg" class="attachment-sm-widget2 size-sm-widget2 wp-post-image" alt="" / loading=lazy loading=lazy> </div> <div class="last-post-tit">MacBook se nepřipojí k wifi MacBook nevidí...</div> <div class="clr"></div> <a href="https://innovakon.ru/cs/phone/macbook-ne-podklyuchaetsya-k-wifi-avtomaticheski-makbuk-ne-podklyuchaetsya-k-wifi-makbuk-ne-vidit-vai-fai.html">číst</a> </div> <div class="last-post col-lg-12 col-md-12 col-sm-6 col-xs-6"> <div class="last-post-img"> <img width="60" height="48" src="/uploads/094fe0c598853f299be65e8611b45d60.jpg" class="attachment-sm-widget2 size-sm-widget2 wp-post-image" alt="" / loading=lazy loading=lazy> </div> <div class="last-post-tit">Jak vydělat peníze na WebMoney</div> <div class="clr"></div> <a href="https://innovakon.ru/cs/internet/kak-zarabotat-rubli-na-webmoney-kak-zarabotat-na-webmoney-proverennye.html">číst</a> </div> <div class="last-post col-lg-12 col-md-12 col-sm-6 col-xs-6"> <div class="last-post-img"> <img width="60" height="48" src="/uploads/280d369c9d1e343119c3d855af4b9c4d.jpg" class="attachment-sm-widget2 size-sm-widget2 wp-post-image" alt="" / loading=lazy loading=lazy> </div> <div class="last-post-tit">Tablet "Supra": recenze zákazníků</div> <div class="clr"></div> <a href="https://innovakon.ru/cs/rates/planshet-podelka-est-takoi-supra-firma-supra-planshet-otzyvy-pokupatelei-plyusy-i-minusy.html">číst</a> </div> <div class="last-post col-lg-12 col-md-12 col-sm-6 col-xs-6"> <div class="last-post-img"> <img width="60" height="48" src="/uploads/b1724f08fa52145089eaa72f836127ee.jpg" class="attachment-sm-widget2 size-sm-widget2 wp-post-image" alt="" / loading=lazy loading=lazy> </div> <div class="last-post-tit">Umístění lodí v reálném čase</div> <div class="clr"></div> <a href="https://innovakon.ru/cs/settings/voennye-korabli-v-realnom-vremeni-onlain-mestonahozhdeniya-sudov-v.html">číst</a> </div> <div class="last-post col-lg-12 col-md-12 col-sm-6 col-xs-6"> <div class="last-post-img"> <img width="60" height="48" src="/uploads/534951a61241c179a7c060b9fe1143c8.jpg" class="attachment-sm-widget2 size-sm-widget2 wp-post-image" alt="" / loading=lazy loading=lazy> </div> <div class="last-post-tit">Nejlepší programy pro Android Záznam hovorů z...</div> <div class="clr"></div> <a href="https://innovakon.ru/cs/rates/prilozheniya-dlya-android-obuchayushchie-programmy-dlya-detei-luchshie.html">číst</a> </div> <div class="last-post col-lg-12 col-md-12 col-sm-6 col-xs-6"> <div class="last-post-img"> <img width="60" height="48" src="/uploads/e280b0808c5e749938522ba1df2a41ec.jpg" class="attachment-sm-widget2 size-sm-widget2 wp-post-image" alt="" / loading=lazy loading=lazy> </div> <div class="last-post-tit">Odebírání nesledujících na Twitteru</div> <div class="clr"></div> <a href="https://innovakon.ru/cs/services/kak-udalit-ne-vzaimnyh-chitatelei-v-twitter-udalyaem-ne-chitatelei-v.html">číst</a> </div> <div class="last-post col-lg-12 col-md-12 col-sm-6 col-xs-6"> <div class="last-post-img"> <img width="60" height="48" src="/uploads/229610355b0a27a465c73ddb25664556.jpg" class="attachment-sm-widget2 size-sm-widget2 wp-post-image" alt="" / loading=lazy loading=lazy> </div> <div class="last-post-tit">Připojení k internetu na notebooku: všechny možné...</div> <div class="clr"></div> <a href="https://innovakon.ru/cs/phone/kak-vklyuchit-internet-na-kompyutere-ispolzuya-mobilnyi-telefon.html">číst</a> </div> <div class="last-post col-lg-12 col-md-12 col-sm-6 col-xs-6"> <div class="last-post-img"> <img width="60" height="48" src="/uploads/5399be52c80b405fedf00779a6136b42.jpg" class="attachment-sm-widget2 size-sm-widget2 wp-post-image" alt="" / loading=lazy loading=lazy> </div> <div class="last-post-tit">Samsung Galaxy S IV je nová vlajková loď...</div> <div class="clr"></div> <a href="https://innovakon.ru/cs/phone/samsung-galaxy-s4-vtoroi-vzglyad-samsung-galaxy-s-iv-novyi-flagman-galakticheskogo-masshtaba-galak.html">číst</a> </div> <div class="clr"></div> </div> </div> <div id="text-4" class="widget widget_text sidebar-wrp"> <div class="textwidget"> </div> </div> <div id="ketena1" style="height:500px;width:260px;" align="center"></div> <div class="clr"></div> </div> </div> </div> </div> <div id="footer"> <div class="container"> <div class="row"> <div class="footer-contacts col-lg-6 col-md-6 col-sm-12 col-xs-12"> <img src="/logo/logo.png" loading=lazy loading=lazy> <div class="footer-contacts-tit">innovakon.ru <br>Mobilní telefony a komunikace</div> <div class="footer-soc"> <div class="footer-soc-wrp"> <div class="soc_w"> <a href="#" class="soc-link vk" target="_blank"></a> <a href="#" class="soc-link fb" target="_blank"></a> </div> </div> </div> </div> <div class="footer-links col-lg-4 col-md-6 col-sm-12 col-xs-12"> </div> <div class="footer-links col-lg-4 col-md-4 col-sm-4 col-xs-4" style="display: block;"> <ul> <li><a href="">Edice projektu</a></li> <li><a href="">Reklama na webu</a></li> </ul> <ul> <li><a href="https://innovakon.ru/cs/feedback.html">Kontakty</a></li> <li><a href="https://innovakon.ru/cs/sitemap.xml">Mapa stránek</a></li> </ul> </div> </div> </div> <div class="copyright">© 2024 Mobilní telefony a komunikace</div> </div> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script> <script src="https://innovakon.ru/wp-content/themes/trudinsp/js/bootstrap.min.js"></script> <script type="text/javascript" src="https://innovakon.ru/wp-content/themes/trudinsp/js/SmoothScroll.js"></script> <a id="scroll-to-top" href="#" title="Přejděte na začátek">Nahoru</a> <script type='text/javascript' src='https://innovakon.ru/wp-content/plugins/contact-form-7/includes/js/jquery.form.min.js?ver=3.51.0-2014.06.20'></script> <script type='text/javascript' src='https://innovakon.ru/wp-content/plugins/contact-form-7/includes/js/scripts.js?ver=4.4.1'></script> <script type='text/javascript' src='https://innovakon.ru/wp-content/plugins/jquery-smooth-scroll/js/jss-script.min.js?ver=4.8.3'></script> <script type='text/javascript' src='https://innovakon.ru/wp-content/plugins/table-of-contents-plus/front.min.js?ver=1509'></script> <script type='text/javascript' src='/wp-includes/js/jquery/ui/effect.min.js?ver=1.11.4'></script> <script type='text/javascript' src='/wp-includes/js/jquery/ui/effect-blind.min.js?ver=1.11.4'></script> <script type='text/javascript'> /* <![CDATA[ */ var stbUserOptions = { "mode":"css","cssOptions":{ "roundedCorners":false,"mbottom":20,"imgHide":"http:\/\/innovakon.ru\/wp-content\/plugins\/wp-special-textboxes\/themes\/stb-metro\/minus.png","imgShow":"http:\/\/innovakon.ru\/wp-content\/plugins\/wp-special-textboxes\/themes\/stb-metro\/plus.png","strHide":"\u0421\u043a\u0440\u044b\u0442\u044c","strShow":"\u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c"} }; /* ]]> */ </script> <script type='text/javascript' src='https://innovakon.ru/wp-content/plugins/wp-special-textboxes/js/wstb.min.js?ver=5.5.101'></script> <script type='text/javascript' src='/wp-includes/js/wp-embed.min.js?ver=4.8.3'></script> <script type="text/javascript" id="slb_context">/* <![CDATA[ */if ( !!window.jQuery ) { (function($){ $(document).ready(function(){ if ( !!window.SLB ) { { $.extend(SLB, { "context":["public","user_guest"]} );} } })} )(jQuery);} /* ]]> */</script> <script type="text/javascript"> <!-- var _acic={dataProvider:10};(function(){var e=document.createElement("script");e.type="text/javascript";e.async=true;e.src="https://www.acint.net/aci.js";var t=document.getElementsByTagName("script")[0];t.parentNode.insertBefore(e,t)})() //--> </script><br> <br> </body> </html><script data-cfasync="false" src="/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js"></script>