Opět pokračujeme ve studiu XML a v tomto článku se seznámíme s 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 značky XML, jsme již částečně zvážili v předchozím článku "". Nyní se tohoto tématu ještě jednou dotkneme a podrobněji jej rozebereme. To je provedeno záměrně, aby vám bylo snazší vizualizovat celý obrázek konstrukcí XML.

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

Jak již bylo zmíněno v předchozím článku, tagy v XML neoznačují pouze text, jako je tomu v HTML, ale vyčleňují jednotlivé prvky (objekty). Prvky zase hierarchicky organizují informace v dokumentu, což z nich zase udělalo základní 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 získali podstatu 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. jsou různé, takže tento moment je třeba si je okamžitě zapamatovat, aby se předešlo chybám v budoucnu.
Takže jsme přišli na prvky. Nyní přejdeme k dalšímu bodu, jako je logická organizace XML dokumentů.

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

Jak si pamatujete, hlavní strukturou jazyka XML jsou prvky, které mohou obsahovat další vnořené struktury a tvoří tak hierarchickou strukturu ve formě stromu. V tomto případě bude nadřazeným prvkem kořen a všechny ostatní podřízené prvky budou větvemi a listy stromu XML.

Abychom snáze pochopili podstatu výše uvedeného, ​​podívejme se na následující obrázek s příkladem.

Jak vidíme, organizace XML dokumentu ve formě stromu je poměrně jednoduchá struktura na zpracování. Výrazová složitost samotného stromu je přitom poměrně velká. Právě 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 uzavřeny v jednoduchých nebo dvojitých uvozovkách. Atribut pro prvek je nastaven následovně:

V tomto případě byl použit atribut s názvem "atribut" a hodnotou "value". Zde je vhodné hned poznamenat, ž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.

Pozor byste si měli dát i na 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ž přistoupíme k úvahám o dalších konstrukcích XML, je také vhodné poznamenat, že při vytváření atributů, např Speciální symboly, jako ampersand "&" nebo lomené závorky "<>". Tyto znaky jsou vyhrazeny jako řídicí znaky („&“ je entita a „<» и «>” otevřít a zavřít značku prvku) a nelze je použít „čistým“ způsobem. 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

V XML je možné 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 výše uvedeného příkladu, v XML jsou instrukce pro zpracování uzavřeny v lomených uvozovkách následovaných otazníkem. Toto je trochu jako ten běžný, na který jsme se podívali v našich prvních tutoriálech PHP. První část instrukce pro zpracování definuje aplikaci nebo systém, pro který je určena druhá část této instrukce nebo její obsah. Pokyny pro zpracování jsou však platné pouze pro aplikace, kterým jsou určeny. Příkladem instrukce pro zpracování by byla následující instrukce.

Stojí za zmínku, že v XML existuje speciální konstrukce, která vypadá velmi podobně jako instrukce pro zpracování, ale sama o sobě není. Jedná se o XML deklaraci, která přechází do zpracování software některé informace o vlastnostech dokumentu XML, jako je kódování, verze jazyka, podle kterého je napsán tento dokument 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. Důvodem je, že deklarace XML a instrukce pro zpracování nemohou podle definice obsahovat atributy, takže se tyto deklarace nazývají pseudoatributy. Je dobré si to zapamatovat do budoucna, aby se předešlo různým chybám.

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

  • Kódování – odpovídá za kódování XML dokumentu. Obvykle je 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řejdeme k závěrečné části článku a uvažujme o takových konstrukcích XML, jako jsou komentáře a sekce CDATA.

Existuje únikový znak pro dvojité uvozovky v xml? Chci napsat značku jako:

ale když dám ", znamená to, že řádek skončil. Potřebuji něco takového (c++):

Printf("Citace = \" ");

Existuje znak, který má být napsán před dvojitou uvozovkou, aby to uniklo?

Nová, vylepšená odpověď na starou, často kladenou otázku...

Kdy uniknout dvojitým uvozovkám v XML

Mohou se objevit dvojité uvozovky ("). žádná cesta ven :

    V textovém obsahu XML:

    Řekl: "Necituj mě."

    V atributech XML oddělených jednoduchými uvozovkami ("):

    Poznámka: přechod do jednoduchých uvozovek (") také nevyžaduje escapování:

dvojité uvozovky (") musí být stíněné :

    V atributech XML oddělených dvojitými uvozovkami:

spodní řádek

Dvojité uvozovky (") by měly být escapovány jako "v XML" pouze ve velmi omezeném kontextu.

Pokud potřebujete jen rychle něco vyzkoušet, zde je rychlé a špinavé řešení. Pro hodnotu atributu použijte jednoduché uvozovky:

V C++ můžete použít EscapeXML ATL API. Toto je správný způsob, jak zacházet se speciálními znaky...

Zde jsou běžné znaky, které musí být v XML uvozeny, počínaje dvojitými uvozovkami:

  1. dvojité uvozovky (") escapují do "
  2. ampersand (&) uniká do &
  3. jednoduché uvozovky (") escapují do "
  4. méně (<), экранируется до <
  5. větší než (>), escapováno na >

Jiní odpověděli, jak v tomto případě řešit konkrétní útěk.

Širší odpověď je nezkoušejte to udělat sami. Použijte XML API – je jich k dispozici mnoho pro téměř každou moderní programovací platformu.

XML API bude takové věci zpracovávat za vás automaticky, takže to uděláte hodně těžší se pokazit. Pokud nepíšete XML API sami, málokdy se musíte o takové detaily starat.

Norma již dlouhou dobu předepisuje vkládání běžných uvozovek HTML text použijte konstrukci "Pro uvnitř značek se uvozovky "" používají k označení atributů.

Ještě jsem se však nesetkal s prohlížečem, který by neukazoval jako citát jednoduchý symbol "MIMO jakýchkoli tagů. Tak mi, vážení kolegové, řekněte, možná je použití" mimo tagy prostě zbytečná zdlouhavost? Můžete klidně a bez dalších řečí napsat "? Zejména v textech, kde je hodně uvozovek a dodržování přísných pravidel designu (o správném používání národních uvozovek) je irelevantní.

IMHO to dělá mnoho lidí ... ale otázka není úplně jasná: pokud chápete, že podle norem musíte psát uvozovky typu ", ale líně, navzdory tomu, že spousta webů tak funguje, tak co Domnívám se, že zda bude v nových verzích prohlížečů podporováno zobrazování uvozovek, nikdo neví, takže lze dát to nejzřetelnější doporučení: pokud nechcete mít v budoucnu problémy, držte se standardy 100% :) Ale to už víte.toť vše, zapomeňte na to a za 10 let bude vše při starém, garantuji (Microsoft, Mozilla atd.)?

Lynn "Coffee Man" [dokumentace]
ano, mimochodem ... nyní je užitečné číst, nikde není uvedeno, že by uvozovky měly být reprezentovány jako „
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ělování hodnot atributů.

o čem, potřeba použijte přesně entitu, o které se pouze říká<, >a &:

Pokud chce autor umístit postavu "<", во избежание возможной путаницы с началом тега (метка начала тега) он должен использовать ссылку "<" (десятичный код ASCII 60). Точно так же во избежание проблем со старыми версиями пользовательских агентов, некорректно принимающих символы ">" pro konec značky (značka konce značky), měli byste použít odkaz ">" (ASCII desítkový kód 62).

Abyste předešli záměně s odkazy na znaky (začáteční značka odkazu na znak), použijte místo znaku „&“ 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ů "dělá to každý".

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 takový trik nebude fungovat. Proto není potřeba vytvářet problémy s přenositelností napsaného HTML kódu.

Nebo konečně, jak to děláte sami?

&, mimochodem, generuje 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 za & 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 takovou URL omylem uvedl jako href (což samozřejmě při testu 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) bude existovat entita s extravagantním jménem &B bez přívěsu; ? 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- pak to, myslím, bude deklarováno výslovně ne ve specifikaci HTML 4.01, takže by to nemělo ovlivnit normálně deklarovaný dokument. Nebo očekáváte, že si zajistíte podporu pro budoucí standardy jednoduchá změna schéma dokumentu?

Daniel Alievsky[dokument]
V XML normální citace jako text také nepředstavuje žádný problém (respektive v XHTML, samozřejmě). IMHO uvozovky jsou obvykle překládány do " z jediného důvodu - nechcete psát dvě funkce, které převedou text do bezpečné formy při nahrazování v XML / HTML / XHTML.

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 na prvcích XML, stejně jako v HTML. Atributy poskytují Dodatečné informace o prvku.

Atributy XML

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

Atributy XML musí být citovány

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

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
Petrová

ženský
Viktorie
Petrová

V prvním příkladu je atributem pohlaví (pohlaví). 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 užitečné v HTML. V XML vám radím vyhnout se jim. Místo toho použijte prvky.

Moje oblíbená metoda

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

Atribut XML data 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

Péťa
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:

to="Vasya" from="Sveta" title="Připomenutí"
body="Nezapomeň mi zítra zavolat!">

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!.

Stejně jako v HTML, XML prvky může mít atributy. Zároveň hodnota atributy v XML a pravidlo pro jejich tvorbu je v mnohém podobné .

Atributy poskytují další informace o prvku.

Atributy XML

V HTML poskytují atributy některé další informace o prvku:

Atributy často poskytují informace, které nejsou součástí dat. V níže uvedeném příkladu typ souboru nezávisí na datech, ale tato informace může být důležitá pro aplikace, které budou s tímto prvkem manipulovat:

počítač.gif

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

Hodnota atributu musí být vždy uzavřena v uvozovkách. Může to být dvojité nebo jednoduché uvozovky. Pohlaví postavy lze například zapsat takto:

buď takto:

Pokud samotná hodnota atributu obsahuje dvojité uvozovky, lze použít jednoduché uvozovky. Například:

nebo použijte symboly entit:

XML prvky nebo atributy

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

Příklad #1

Anna Kovář

Příklad č. 2

ženský Anna Kovář

V prvním příkladu je pohlaví specifikováno v atributu. Ve druhém se jako prvek zapisuje pohlaví. Oba příklady poskytují stejné informace.

Neexistují žádná pravidla, která by určovala, kdy používat atributy a kdy prvky. Atributy jsou široce používány v HTML. V XML si myslím, že je nejlepší se jim vyhnout a místo nich použít prvky.

co je lepší?

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

Datum se zapisuje jako atribut:

Tove Jani Připomínka

Datum se zapisuje jako prvek:

10/01/2008 Tove Jani Připomínka Tento víkend na mě nezapomeň!

Datum se zapisuje jako rozšířený prvek(Podle mého názoru nejlepší možnost):

10 01 2008 Tove Jani Připomínka Tento víkend na mě nezapomeň!

Vyhnout se atributům XML?

Při používání atributů dochází k některým problémům:

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

Nikdy nepoužívejte následující konstrukce:

Atributy XML pro metadata

Někdy jsou prvkům přiděleny identifikátory. Tyto identifikátory se používají k identifikaci prvků XML přesně stejným způsobem jako identifikační atributy v HTML. Demonstruje to následující příklad:

Tove Jani Připomínka Tento víkend na mě nezapomeň! Jani Tove Re: Připomenutí nezapomenu

Ve výše uvedeném příkladu se atribut id používá k identifikaci různých poznámek. Tato informace není součástí samotné poznámky.

Hlavní myšlenkou všeho, co bylo řečeno, je, že metadata (data o datech) by měla být zapsána jako atributy a samotná data jako prvky.