Základní XML konstrukce - XML ​​prvky, tagy, atributy, instrukce pro zpracování, sekce CDATA, komentáře. XML prvky. Prázdné a neprázdné prvky XML

  • Překlad
  • Tutorial

Injekce SQL, falšování požadavků mezi weby, poškozené XML... Děsivé, děsivé věci, před kterými bychom všichni rádi byli chráněni, ale chceme jen vědět, proč se to všechno děje. Tento článek vysvětluje základní koncept za tím vším: řetězce a zacházení s řetězci v řetězcích.

Hlavní problém Je to jen text. Ano, jen text - to je hlavní problém. Téměř vše uvnitř počítačový systém reprezentován textem (který je naopak reprezentován bajty). Je možné, že některé texty jsou určeny pro počítače, zatímco jiné jsou určeny lidem. Oba ale stále zůstávají textem. Abyste pochopili, o čem mluvím, zde je malý příklad:
Homo sapiens Předpokládejme, že existuje anglický text, který nechci překládat do ruštiny
Nebudete tomu věřit: toto je text. Někdo tomu říká XML, ale je to jen text. Nemusí být vhodné pro ukázku učiteli. v angličtině, ale pořád je to jen text. Můžete si to vytisknout na plakát a chodit s tím na shromáždění, můžete to napsat do dopisu mamince... je to text.

Chceme však, aby určité části tohoto textu měly pro náš počítač nějaký význam. Chceme, aby počítač uměl extrahovat autora textu a text samotný zvlášť, abychom s tím mohli něco dělat. Výše uvedené převeďte například na toto:
Předpokládejme, že existuje anglický text, který nechci překládat do ruštiny od Homo Sapiens
Jak počítač ví, jak to udělat? No protože jsme velmi pohodlně zabalili určité části textu speciálními slovy do vtipných závorek, jako a. Od té doby, co jsme to udělali, můžeme napsat program, který hledá tyto specifické části, extrahuje text a použije ho pro nějaký vlastní vynález.

Jinými slovy, v našem textu jsme použili určitá pravidla, abychom naznačili nějaký zvláštní význam, který by někdo jiný mohl podle stejných pravidel použít.
Dobře, tohle není tak těžké pochopit. Co když chceme použít tyto vtipné závorky, které mají v našem textu nějaký zvláštní význam, ale bez použití tohoto samotného významu?... Něco jako toto:
Homo Sapiens< n and y >
Znaky "" nejsou nic zvláštního. Mohou být legálně použity kdekoli, v jakémkoli textu, jako v příkladu výše. Ale co naše představa o speciálních slovech, jako? Znamená to, že jde také o nějaké klíčové slovo? V XML - snad ano. Nebo možná ne. To je nejednoznačné. Vzhledem k tomu, že počítače nejsou příliš dobré v řešení nejednoznačností, může něco skončit s neočekávaným výsledkem, pokud sami neoznačíme já a nevyřešíme nejednoznačnosti.
Toto dilema lze vyřešit nahrazením nejednoznačných symbolů něčím jednoznačným.
Homo Sapiens Základní matematika nám říká, že pokud x< n and y >n, x nemůže být větší než y.
Nyní by měl být text zcela jednoznačný. "".
Technická definice toho je stínění, unikáme speciálním znakům, když nechceme, aby měly svůj vlastní speciální význam.
uniknout |iˈskāp| [žádný obj. ] uvolnit se [ s obj. ] nevšímat si / nevzpomínat [...] [ s obj. ] IT: důvod, proč být vykládán odlišně [...]
Pokud mají určité znaky nebo sekvence znaků v textu zvláštní význam, pak musí existovat pravidla, která specifikují, jak zacházet se situacemi, kdy musí být tyto znaky použity, aniž by se odvolával na jejich zvláštní význam. Nebo, jinými slovy, útěk odpovídá na otázku: "Pokud jsou tyto symboly tak zvláštní, jak je mohu použít ve svém textu?".
Jak můžete vidět v příkladu výše, ampersand (&) je také speciální znak. Ale co když chceme napsat"


Pokud jsou vaši uživatelé dobří a laskaví, budou zveřejňovat citáty starých filozofů a zprávy budou vypadat asi takto:

Napsal Plato dne 2. ledna, 15:31

Říká se, že jsem řekl: "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut alisequip."


Pokud jsou uživatelé chytří, pravděpodobně budou mluvit o matematice a zprávy budou vypadat takto:

Napsal Pascal 23. listopadu, 04:12

Základní matematika nám říká, že pokud x< n and y >n, x nemůže být větší než y.


Hmm... Opět tito znesvětitelé našich závorek. No, z technického hlediska jsou možná nejednoznačné, ale to nám prohlížeč odpustí, ne?


Dobře, STOP, co sakra? Nějaký vtipálek zavedl do vašeho fóra javascriptové tagy? Každý, kdo se dívá na tuto zprávu na vašem webu, nyní stahuje a spouští skripty v kontextu vašeho webu, které umí kdo ví co. A to není dobré.

Nebrat doslova Ve výše uvedených případech chceme naší DB nebo prohlížeči nějak sdělit, že se jedná pouze o text, nic si z toho nedělejte! Jinými slovy, chceme „odstranit“ speciální významy všech speciálních znaků a klíčová slova z jakýchkoli informací poskytnutých uživatelem, protože mu nedůvěřujeme. Co dělat?

Co? Co to říkáš, chlapče? Oh, říkáš "stínění"? A máš naprostou pravdu, vezmi si sušenku!
Pokud použijeme escapování na uživatelská data před jejich sloučením s dotazem, pak je problém vyřešen. Pro naše databázové dotazy to bude něco jako:
$name = $_POST["jméno"]; $name = mysql_real_escape_string($name); $query = "VYBERTE telefonní_číslo FROM uživatelů WHERE jméno = "$jméno""; $vysledek = mysql_query($dotaz);
Jen jeden řádek kódu, ale teď už nikdo nemůže "hacknout" naši databázi. Podívejme se znovu, jak budou vypadat SQL dotazy v závislosti na vstupu uživatele:
Alex
SELECT phone_number FROM users WHERE name = "Alex"
Mc Donalds
SELECT phone_number FROM users WHERE name = "Mc\"Donalds"
Joe"; uživatelé DROP TABLE; --
SELECT phone_number FROM users WHERE name = "Joe\"; uživatelé DROP TABLE; --"
mysql_real_escape_string bez rozdílu umístí lomítko před cokoli, co by mohlo mít nějaký zvláštní význam.


Funkci htmlspecialchars aplikujeme na všechna uživatelská data před jejich výstupem. Zpráva škůdce nyní vypadá takto:

Napsal JackTR dne 18. července, 12:56


Všimněte si, že hodnoty přijaté od uživatelů nejsou ve skutečnosti „poškozené“. Jakýkoli prohlížeč to analyzuje jako HTML a zobrazí vše na obrazovce ve správném tvaru.

Což nás přivádí zpět k... Vše výše uvedené ukazuje problém společný mnoha systémům: text v textu musí být escapován, pokud nemá obsahovat speciální znaky. Umístěním textové hodnoty v SQL musí být escapovány podle pravidel SQL. Při umisťování textových hodnot do HTML musí být escapovány podle pravidel HTML. Při vkládání textových hodnot do (název technologie) musí být uvozeny podle pravidel (název technologie). To je vše. Pro úplnost jsou samozřejmě i jiné způsoby, jak se vypořádat s uživatelským vstupem, který může, ale nemusí obsahovat speciální znaky:
  • Validace
    Můžete zkontrolovat, zda vstup uživatele odpovídá určité specifikaci. Pokud požadujete zadání čísla a uživatel zadá něco jiného, ​​program by měl uživatele informovat a zadání zrušit. Pokud je toto vše organizováno správně, pak nehrozí zachycení „uživatelů DROP TABLE“ tam, kde měl uživatel zadat „42“. To není příliš praktické pro zamezení vkládání HTML/SQL, protože... Často musíte přijmout text ve volném formátu, který může obsahovat triky. Validace se obvykle používá jako doplněk k jiným opatřením.
  • Sanitace
    Můžete také „tiše“ odstranit jakékoli symboly, které považujete za nebezpečné. Například jednoduše odstraňte vše, co vypadá jako HTML tag, abyste se vyhnuli přidání do vašeho fóra. Problém je, že můžete odstranit zcela legální části textu.
    Připravené SQL příkazy
    Existují speciální funkce, které dělají to, co jsme chtěli: aby databáze pochopila rozdíly mezi samotným SQL dotazem a informacemi poskytovanými uživateli. V PHP vypadají asi takto:
    $stmt = $pdo->prepare("SELECT phone_number FROM users WHERE name = ?"); $stmt->execute($_POST["jméno"]);
    V tomto případě probíhá odesílání ve dvou fázích, přičemž se jasně rozlišuje mezi požadavkem a proměnnými. Databáze má schopnost nejprve porozumět struktuře požadavku a následně ji naplnit hodnotami.

  • V reálném světě se všechny používají společně pro různé úrovně ochrany. Vždy byste měli používat ověření, abyste se ujistili, že uživatel zadává správná data. Poté můžete (ale nemusíte) naskenovat zadaná data. Pokud se vám uživatel zjevně snaží prodat nějaký skript, můžete jej jednoduše smazat. Potom byste měli vždy před vložením uživatelských dat do SQL dotazu vždy uniknout (totéž platí pro HTML).

Norma již dlouhou dobu předepisuje vkládání běžných uvozovek do HTML text pro označení atributů se používá konstrukce "Pro vnitřní značky uvozovky".

Ještě jsem se ale nesetkal s prohlížečem, který by v uvozovkách nezobrazoval prostý symbol „MIMO žádné značky.“ Řekněte mi tedy, vážení kolegové, možná je používání „vnějších značek prostě nuda, kterou nikdo nepotřebuje?“ Můžete v klidu a bez dalších řečí napsat "? Zejména v textech, kde je hodně uvozovek a dodržování přísných pravidel designu (s ohledem na správné používání národních uvozovek) je irelevantní.

IMHO to dělá spousta lidí... ale otázka není úplně jasná: pokud chápete, že podle norem je potřeba psát uvozovky jako ", ale je to líné, nehledě na to, že spousta stránek tak funguje, tak co Očekáváte, že uslyšíte? Myslím, že jde o to, nikdo neví, zda bude zobrazování uvozovek podporováno v nových verzích prohlížečů, takže s největší pravděpodobností můžeme dát jasné doporučení: pokud nechcete mít v budoucnu problémy, 100% - dodržujte standardy :) Ale to už víte.Nebo čekáte na potvrzení: ano, je to nuda, to je vše, zapomeňte na to a za 10 let bude vše při starém, já (Microsoft, Mozilla atd. ) záruka?

Lynn "Coffee Man" [dokumentace]
ano, mimochodem... nyní je užitečné číst, nikde není uvedeno, že by uvozovky měly být zastoupeny ve tvaru "
http://www2.stack.ru/~julia/HTML401/charset.html:

Někteří autoři používají odkaz na znakovou entitu """ ke kódování instancí dvojitých uvozovek ("), protože tento znak lze použít k oddělení hodnot atributů.

o tom, že musíte použít entitu, o které se píše pouze a &:

Pokud chce autor do textu umístit znak "" (ASCII desítkový kód 62).

Aby nedošlo k záměně s odkazy na znaky (počáteční značka odkazu na znak), měl by být místo znaku "&" použit odkaz "&" (ASCII desítkový kód 38). Kromě toho by měl být v hodnotách atributů použit také odkaz „&“, protože odkazy na znaky v hodnotách atributů CDATA jsou povoleny.

Ale já jen očekávám něco jako Lynnina odpověď: že ve skutečnosti žádný takový standard neexistuje. Ani mě to nenapadlo – moje informace jsou z populárních učebnic a z důvodů „to dělají všichni“.

Nebo jiná možnost: ale pokud se budete řídit novými standardy, se kterými jsem se ve své praxi nesetkal - jako xhtml (přesně, xhtml jsem kontroloval), tak tento trik nebude fungovat. Není tedy třeba vytvářet problémy s přenositelností napsaného HTML kódu.

Nebo na závěr: jak to děláš ty sám?

&, mimochodem, vyvolává podobnou otázku. Výše uvedený dokument říká „aby nedošlo k záměně“. Záměna je však možná pouze v případě, že po & následuje jeden z poskytnutých kódů. Co když je to, řekněme, URL jako "..../script?A=1&B=2" ? Riskuji něco, když jsem toto URL omylem uvedl jako href (což samozřejmě při testování funguje správně)? Cokoli jiného než krajně nepravděpodobná situace, že za 10 let (až bude stránka zastaralá nebo již desetkrát přepsána) se objeví entita s extravagantním jménem &B bez konečného; ? Jinými slovy, jak pečlivě by se měly všechny takové případy kontrolovat?

Danieli, pokud jste si jisti, že nemáte žádné problémy se stávajícími kódy, můžete napsat jednoduše &. Pokud se v budoucnu objeví nový kód, myslím, že bude výslovně deklarován ne v HTML specifikace 4.01, proto by to nemělo ovlivnit běžně deklarovaný dokument. Nebo očekáváte, že budete podporovat budoucí standardy jednoduchá změna obrysy dokumentu?

Daniel Alievsky[dokument]
V XML také běžné uvozovky jako text nedělají žádný problém (samozřejmě v XHTML). IMHO uvozovky se obvykle překládají do „z jediného důvodu – nechcete psát dvě funkce pro převod textu do bezpečné formy při nahrazování v XML/HTML/XHTML.

Účel této lekce:

  • BI musí znát formát záznamu XML
  • BI musí umět sestavit dokument ve formě XML kódu
  • BI musí znát datové typy a umět je používat
  • Poznámka: XML není tak stručné, jak jej popisujeme v tomto tutoriálu. Uvažujeme pouze ty vlastnosti jazyka XML, které budou použity v systému ODA-TM.

    XML. Základ

    XML bylo vytvořeno pro strukturování, ukládání a přenos informací.

    Následující příklad „Poznámka od přítele příteli“ má formát XML:

    Nikolay Ivan Připomenutí Doufám, že jste na naše setkání nezapomněli

    Vizuálně lze tento kód znázornit v následující podobě (obr. 1.).

    Kód má odesílatele a příjemce informace, má také hlavičku a tělo zprávy.

    Je určen ke zpracování, odeslání a zobrazení někým.

    Ale přesto tento dokument XML nic nedělá. Jsou to jen informace zabalené do značek.

    XML - strom

    XML má stromovou strukturu. Dokument má vždy kořenový prvek (instrukce nemá nic společného se stromem). Prvek stromu má vždy potomky a předky, kromě kořenového prvku, který žádné předky nemá, a prvků slepé uličky (listy stromu), které žádné potomky nemají. Každý prvek stromu se nachází na určité úrovni hnízdění (dále jen „úroveň“). Prvky na stejné úrovni mají předchozí a následující prvky.

    Vytvořte si vlastní značky pomocí XML

    Neexistuje žádný standardní formát pro vytváření značek (deskriptorů, prvků).

    XML nemá žádné předdefinované značky.

    • XML umožňuje autorovi definovat své vlastní značky a vlastní strukturu dokumentu.
    • K přenosu dat se používá XML
    • XML je softwarový a hardwarový nezávislý nástroj pro přenos informací.
    • XML je nyní pro web stejně důležité jako HTML
    • XML je nejběžnějším nástrojem pro přenos dat mezi různými aplikacemi
    • XML se používá v mnoha aspektech vývoje webu, často ke zjednodušení ukládání a výměny dat
    XML syntaxe

    Syntaxe pravidel XML je velmi jednoduchá a logická

    • Všechny prvky XML musí mít uzavírací značku
    • Prvky XML musí být správně vnořeny (jeden do druhého a v žádném případě se nesmí křížit)
    • Dokumenty XML musí mít kořenový element (XML dokumenty musí obsahovat jeden element, který je rodičem všech ostatních elementů. Tento element se nazývá kořenový element.
    • Hodnota atributu XML musí být uzavřena v uvozovkách.
    Komentáře

    Pokud potřebujete pro program analyzátoru zcela „neviditelný“ fragment dokumentu XML, můžete jej naformátovat jako komentář tak, že před něj napíšete znaky.< !-- , а после него - символы -->se dvěma pomlčkami za sebou.

    Například:

    < !-- Это комментарий -->

    Program analyzátoru přeskočí celou tuto strukturu, aniž by se do ní „podíval“.

    Tato syntaxe komentáře na něj ukládá dvě omezení:

    • Do komentáře nelze napsat dvě pomlčky za sebou;
    • komentář nelze ukončit pomlčkou.
    XML prvky

    Element XML je vše od počáteční značky prvku po jeho koncovou značku.

    Prvek může obsahovat:

    • další prvky
    • text
    • atributy
    • nebo kombinace všech výše uvedených...
    Pravidla pro pojmenování XML

    Prvky XML musí splňovat tato pravidla pro pojmenování:

    • Jména mohou obsahovat písmena, čísla a další symboly
    • Jména nemohou začínat číslicí ani interpunkčním znaménkem
    • Jména nesmí obsahovat mezery
    Atributy

    Atributy poskytují Dodatečné informace o prvcích, které nejsou součástí dat.

    V níže uvedeném příkladu není typ souboru relevantní pro data, ale je důležitý pro software, který může s prvkem manipulovat:

    počítač.gif

    Atributy XML musí být uzavřeny v uvozovkách

    Hodnoty atributů musí být vždy v uvozovkách. Lze použít jednoduché nebo dvojité uvozovky. Příklad: pro určení pohlaví osoby lze prvek zapsat takto:

    Pokud samotná hodnota atributu obsahuje dvojité uvozovky, můžete použít jednoduché uvozovky, jako v tomto příkladu:

    nebo můžete použít znakové objekty: &&

    Některé příklady použití datového typu Date

    Datum jako atribut

    Tove Jani Reminder Nezapomeň na mě tento víkend!

    Datum jako prvek

    10/01/2008 Tove Jani Připomenutí Nezapomeň na mě tento víkend!

    Datum jako rozšířený prvek

    01/10/2008 Tove Jani Připomenutí Nezapomeň na mě tento víkend!

    Atributy metadat

    Tyto identifikátory lze použít k definování prvků XML.

    Příklad:

    Tove Jani Reminder Nezapomeň na mě tento víkend! Jani Tove Re: Připomenutí Nezapomeň

    Data o datech musí být uložena jako atributy a samotná data musí být uložena jako prvky.

    XML. Datový typ Vestavěné jednoduché typy Datum a čas
    • dateTime obsahuje datum a čas ve formátu CCYY-MM-DThh:mm:ss
    • trvání - představuje časové trvání, které je vyjádřeno v gregoriánských dnech, hodinách, minutách a sekundách.

    Například: záznam P1Y2M3DT10H30M45S znamená jeden rok (1R), dva měsíce (2M), tři dny (3DT), deset hodin (10H), třicet minut (30M) a 45 sekund (45S).

    Vstup může být zkrácený P120M znamená 120 měsíců a T120M znamená 120 minut.

    • time obsahuje čas v normálním formátu hh:mm:ss
    • datum obsahuje datum ve formátu CCYY-MM-DD
    • gYearMonth přiděluje rok a měsíc ve formátu CCYY-MM
    • gYear znamená rok ve formátu CCYY
    • gMonthDay obsahuje měsíc a den ve formátu MM-DD
    • gDay den v měsíci ve formátu DD
    • gMusth měsíc ve formátu MM
    Řetězce znaků

    string je základní typ znaku.

    Řetězec znaků jako posloupnost znaků Unicode, včetně znaků mezera, tabulátor, návrat vozíku a znaky odřádkování.

    • normalizedString - podtyp typu - jedná se o řetězce, které neobsahují řádkování "\n", návrat vozíku "\r" a vodorovné tabulátory "\t".
      • token - podtyp typu normalizedString - ne, kromě mezer na začátku a na konci a několika po sobě jdoucích mezer.
        • jazyk - podtyp tokenu, definovaný pro záznam názvu jazyka podle doporučení RFC 1766, například ru, en, de, fr.
        • NMTOKEN je podtyp tokenu, který se používá pouze v atributech k zaznamenání jejich výčtových hodnot.
        • Jméno - podtyp tokenu, tvořený jmény XML - posloupnosti písmen, čísel, pomlček, teček, dvojteček, podtržítek, začínající písmenem (kromě vyhrazené posloupnosti písmen X, x, M, m, L, l v jakékoli kombinaci případů) nebo podtržítko. Jména začínající řetězcem xml, jsou používány samotnou specifikací XML.
          • NCName je podtyp názvu, který neobsahuje dvojtečku. Jsou definovány tři podtypy: ID, IDREF, ENTITY
    Binární typy
    • boolen - binární, logický. Přijímá hodnoty: True nebo False (1 nebo 0)
    • base64Binary - Binární celá čísla zakódovaná v Base64
    • hexBinary - binární celá čísla v hexadecimálním tvaru bez jakýchkoli dalších znaků
    Reálná čísla
    • desetinná jsou reálná čísla zapsaná s pevnou tečkou: 123,45, -0,48747798 atd.
    • dvojité a plovoucí typy vyhovují standardu IEEE754-85, psané s pevnou nebo plovoucí desetinnou čárkou.
    Celá čísla
    • integer - základní celočíselný typ obsahující čísla s řádem nula, chápaný jako podtyp desetinný
    • číslo - definuje číslo (bez omezení počtu číslic); může obsahovat znaménko, zlomky a exponent. Hodnoty se mění

    od 1,7976931348623157E+308 do 2,2250738585072014E-308

    Opět pokračujeme ve studiu XML a v tomto článku se seznámíme s takovými konstrukcemi XML, jako jsou instrukce pro zpracování, komentáře, atributy a další prvky XML. Tyto prvky jsou základní a umožňují flexibilně, v přísném souladu s normou, označovat dokumenty absolutně libovolné složitosti.

    Některé body, jako jsou XML tagy, jsme již částečně diskutovali v předchozím článku „“. Nyní se tohoto tématu znovu dotkneme a prozkoumáme jej podrobněji. To se provádí speciálně proto, aby vám bylo snazší získat úplný obrázek o konstrukcích XML.

    XML prvky. Prázdné a neprázdné prvky XML

    Jak bylo zmíněno v předchozím článku, tagy v XML neoznačují pouze text, jako je tomu v HTML, ale zvýrazňují jednotlivé prvky (objekty). Prvky zase hierarchicky organizují informace v dokumentu, což z nich zase udělalo hlavní strukturální jednotky jazyka XML.

    V XML mohou být prvky dvou typů – prázdné a neprázdné. Prázdné prvky neobsahují žádná data, jako je text nebo jiné konstrukce. Na rozdíl od prázdných prvků mohou neprázdné prvky obsahovat jakákoli data, jako je text nebo jiné prvky a konstrukce XML. Abychom pochopili smysl výše uvedeného, ​​podívejme se na příklady prázdných a neprázdných prvků XML.

    Prázdný prvek XML

    Neprázdný prvek XML

    Obsah prvku...

    Jak vidíme z výše uvedeného příkladu, hlavní rozdíl mezi prázdnými a neprázdnými prvky je v tom, že se skládají pouze z jednoho tagu. Kromě toho také stojí za zmínku, že v XML všechna jména rozlišují malá a velká písmena. To znamená, že názvy myElement, MyElement, MYELEMENT atd. proto se od sebe liší tento moment Stojí za to si to hned zapamatovat, abyste se v budoucnu vyvarovali chyb.
    Takže jsme přišli na prvky. Nyní přejděme k dalšímu bodu, kterým je logické uspořádání XML dokumentů.

    Logická organizace XML dokumentů. Stromová struktura XML dat

    Jak si pamatujete, hlavním konstruktem jazyka XML jsou elementy, které mohou obsahovat další vnořené konstrukty a tím i formu hierarchická struktura stromový pohled. V tomto případě nadřazený prvek bude kořenem a všechny ostatní potomky budou větvemi a listy stromu XML.

    Pro snazší pochopení výše uvedeného se podívejme na následující obrázek s příkladem.

    Jak vidíme, uspořádání dokumentu XML jako stromu je poměrně jednoduchá struktura na zpracování. Přitom výrazová složitost samotného stromu je docela velká. Stromová reprezentace je nejoptimálnějším způsobem popisu objektů v XML.

    Atributy XML. Pravidla pro zápis atributů v XML

    V XML mohou prvky obsahovat také atributy s přiřazenými hodnotami, které jsou umístěny v jednoduchých nebo dvojitých uvozovkách. Atribut pro prvek je nastaven takto:

    V tomto případě byl použit atribut s názvem „atribut“ a hodnotou „value“. Okamžitě stojí za zmínku, že atribut XML musí obsahovat nějakou hodnotu a nemůže být prázdný. V opačném případě bude kód nesprávný z hlediska XML.

    Za pozornost stojí také používání uvozovek. Hodnoty atributů mohou být uzavřeny v jednoduchých nebo dvojitých uvozovkách. Kromě toho je také možné použít některé uvozovky uvnitř jiných. Pro demonstraci zvažte následující příklady.

    Než se podíváme na další konstrukce XML, také stojí za zmínku, že speciální znaky, jako je ampersand „&“ nebo lomené závorky „“, nelze při vytváření atributů použít jako hodnoty. Tyto znaky jsou vyhrazeny jako řídicí znaky („&“ je entita a „“ otevírá a zavírá značku prvku) a nelze je použít v „čisté formě“. Chcete-li je použít, musíte se uchýlit k nahrazení speciálních znaků.

    Pokyny pro zpracování XML (instrukce pro zpracování). XML deklarace

    XML má schopnost zahrnout do dokumentu instrukce, které nesou specifické informace pro aplikace, které budou zpracovávat konkrétní dokument. Pokyny pro zpracování v XML jsou vytvořeny následovně.

    Jak můžete vidět z příkladu výše, v XML jsou pokyny pro zpracování uzavřeny v rohových uvozovkách s otazníkem. To je trochu jako obvyklé, na které jsme se podívali v prvních lekcích PHP. První část instrukce pro zpracování specifikuje aplikaci nebo systém, kterému je určena druhá část této instrukce nebo její obsah. Pokyny pro zpracování jsou však platné pouze pro ty aplikace, kterým jsou určeny. Příkladem instrukce pro zpracování může být následující instrukce.

    Stojí za zmínku, že XML má speciální konstrukci, která je velmi podobná instrukci zpracování, ale sama jím není. Jedná se o deklaraci XML, která se předává procesoru software některé informace o vlastnostech dokumentu XML, jako je kódování, verze jazyka, ve kterém je tento dokument napsán atd.

    Jak můžete vidět z příkladu výše, deklarace XML obsahuje takzvané pseudoatributy, které jsou velmi podobné běžným atributům, o kterých jsme hovořili výše. Faktem je, že z definice XML deklarace a instrukce pro zpracování nemohou obsahovat atributy, takže tyto deklarace se nazývají pseudoatributy. To stojí za to pamatovat do budoucna, abyste se vyvarovali různých chyb.

    Protože jsme se zabývali pseudoatributy, podívejme se, co znamenají.

    • Kódování – zodpovídá za kódování XML dokumentu. Obvykle se používá kódování UTF8.
    • Verze – verze jazyka XML, ve kterém je tento dokument napsán. Obvykle se jedná o XML verze 1.0.

    Nyní přejděme k závěrečné části článku a zvažte takové konstrukce XML, jako jsou komentáře a sekce CDATA.

    Dobrý den, milí návštěvníci stránek! Pokračujme v tématu značkovacího jazyka XML a podívejme se na použití atributů. Atributy mohou být přítomny v prvcích XML, stejně jako v HTML. Atributy poskytují další informace o prvku.

    Atributy XML

    V HTML atributy poskytnout další informace o prvcích:

    Atributy XML musí být uzavřeny v uvozovkách

    Hodnoty atributy v xml musí být vždy uzavřeno v uvozovkách. Lze použít jednoduché i dvojité uvozovky. Chcete-li uvést pohlaví prvku osoby, můžete jej napsat takto:

    Pokud samotná hodnota atributu obsahuje dvojité uvozovky, můžete použít jednoduché uvozovky, jako v tomto příkladu:

    Prvky XML vs. atributy

    Podívejte se na následující příklady:

    Viktorie
    Petrova

    ženský
    Viktorie
    Petrova

    V prvním příkladu je sex atributem. V tom druhém je prvkem sex. Oba příklady poskytují stejné informace.

    Neexistují žádná pravidla, kdy používat atributy a kdy prvky. Atributy jsou v HTML užitečné. V XML doporučuji se jim vyhnout. Místo toho použijte prvky.

    Můj oblíbený způsob

    Následující tři dokumenty XML obsahují přesně stejné informace:

    Atribut data XML je použit v prvním příkladu:

    Prvek rozšířeného data se používá ve třetím: (TO JE MŮJ OBLÍBENÝ ZPŮSOB):



    10
    01
    2008

    Petr
    Sveta
    Připomínka

    Vyhnout se XML atributům?

    Některé z problémů s používáním atributů xml:

    • atributy nemohou obsahovat více hodnot (prvky mohou)
    • atributy nemohou obsahovat stromové struktury (prvky mohou)
    • atributy se hůře rozšiřují (pro budoucí změny)

    Nedělejte to takto:


    Atributy XML pro metadata


    Vasya
    Sveta
    Připomínka
    Nezapomeňte mi zítra zavolat!


    Sveta
    Vasya
    Re: Připomenutí
    OK

    Výše uvedené atributy id se používají k identifikaci různých poznámek. Nejsou součástí poznámky samotné.

    Snažím se zde říci, že metadata (data o datech) by měla být uložena jako atributy xml a samotná data by měla být uložena jako prvky.

    Děkuji za pozornost!.