Obsah
XML je standard (přesněji doporučení konsorcia W3C) jak vytvářet značkovací jazyky.
Jedná se tedy o metajazyk.
Ideově vychází ze staršího standardu SGML (Structure Generalized Markup Language) - XML lze jej téměř chápat jako podmnožinu SGML.
Se základním standardem úzce souvisí několik dalších, např. XML Namespaces, XInclude, XML Base, XML Infoset.
Tyto spolu s dalšími standardy (XSLT, XSL-FO, XHTML, CSS...) tvoří "rodinu" standardů XML.
vyňato z preambule ke specifikaci XML 1.0 (Third Edition)
XML shall be straightforwardly usable over the Internet.
XML bude přímočaře použitelné na Internetu.
XML shall support a wide variety of applications.
XML bude podporovat širokou škálu aplikací.
XML shall be compatible with SGML.
XML bude kompatibilní se SGML.
It shall be easy to write programs which process XML documents.
Tvorba programů zpracovávajících XML bude jednoduchá.
The number of optional features in XML is to be kept to the absolute minimum, ideally zero.
Počet volitelných prvků XML standardu bude málo, optimálně 0.
XML documents should be human-legible and reasonably clear.
XML dokumenty by měly být "lidsky" čitelné a rozumně jednoduché.
The XML design should be prepared quickly.
Návrh XML standardu by měl být rychle hotov.
The design of XML shall be formal and concise.
Návrh XML musí byt formální a správný.
XML documents shall be easy to create.
XML dokumenty bude možné snadno vytvořit.
Terseness in XML literal is of minimal importance.
Úspornost XML značkování není podstatná.
XML není jeden konkrétní značkovací jazyk; je to specifikace určující, jak mají vypadat značkovací jazyky
jedná se tedy o "metajazyk"
konceptuálně jde o zjednodušení SGML standardu, aby se usnadnila práce tvůrcům parserů (analyzátorů) a aplikací
- například v tom, že každý element musí být uzavřen; pak na přečtení struktury dokumentu nemusíme mít DTD
XML navazuje na úspěšnou implementaci SGML - jazyk HTML; má podobné charakteristiky z hlediska zaměření na internet
Vážné diskuse se vedou okolo binárního XML, což by měla být rovnocenná reprezentace stejného modelu, jako má "textové" XML.
Původní specifikace (W3C Recommendation) XML 1.0 na W3C: http://www.w3.org/XML/
4th Edition (aktualizace, opravy, ne změny) na Extensible Markup Language (XML) 1.0 (Fourth Edition)
výborná komentovaná verze téhož na XML.COM (Annotated XML): http://www.xml.com/pub/a/axml/axmlintro.html
XML 1.1 (Second Edition) - změny indukované zavedením UNICODE 3, lepší možnosti normalizace, upřesnění postupu manipulace se znaky ukončení řádku. XML 1.1 není už vázaný na konkrétní verzi UNICODE, ale vždy na verzi poslední.
pracovní skupina zprostředkující jakési "rozhraní" mezi jednotlivými skupinami aktivity XML a také navenek
vývoj hlavní specifikace (XML) a blízce souvisejících (Namespaces in XML, XML Information Set, XInclude)
vývoj specifikací Extensible Stylesheet Language (XSL), zahrnující jak XSL Transformations (XSLT), tak XSL Formatting Objects (XSL/FO). Od zač. 2003 přesunuto pod W3C Architecture Domain.
vývoj standardů k efektivní výměně XML dat s důrazem na platformovou přenositelnost a nezávislost na jednotlivých výrobcích (součástí je např. XML Binary Characterization)
pracuje na definici skriptovacího jazyka pro XML, na specifikaci operací nad XML daty
dnes již nefungující skupina pracovala na vývoji XML Linking Language (XLink) a XML Pointer Language (XPointer).
pracuje na návrhu XML Query Language (XQuery a XPath - společně s XSL Working Group)
Připravuje specifikace W3C XML Schema k popisu struktury, obsahu, příp. sémantiky XML dokumentů.
(výborný úvodní) Koskův seriál o XML pro Softwarové noviny: http://kosek.cz/clanky/swn-xml/index.html
(obsahuje hodně příkladů) Zvon XML Tutorial: http://www.zvon.org/xxl/XMLTutorial/General/book_en.html
Microsoft XML Tutorial: http://msdn.microsoft.com/xml/tutorial/
101 XML Tutorials: http://www.xml101.com/xml/default.asp
Tutoriály na Developerlife.com: http://developerlife.com
http://xml.startkabel.nl - aktuality, odkazy (v angličtině/nizozemštině - obnovováno cca 1x týdně)
http://zvon.org - asi nejlepší soubor tutoriálů, on-line referencí v mnoha jazycích, místo je hostované v ČR
xml.coverpages.org - denně aktualizovaný soubor odkazů na články, publikace standardů, software, atd. v oblasti XML. Nejlepší zdroj v této kategorii.
http://xml.com - články, tutoriály atd. na vysoké technické úrovni
http://ibm.com/developer/xml - články, tutoriály, software atd. na vysoké technické úrovni
mailto:xml-dev@xml.org - nejznámější maillist ke XML standardům (webový archív)
IBM AlphaWorks: http://www.alphaworks.ibm.com - alpha-software fy IBM k volnému vyzkoušení
Free XML Software (L. M. Garshol): http://www.garshol.priv.no/download/xmltools/ - asi nejlepší kolekce odkazů na nekomerční XML software
XMLSoftware: http://xmlsoftware.com - asi nejlepší kolekce odkazů na obecný XML software (i komerční)
Přehled XML aktivit W3C: http://www.w3.org/XML/Activity - specifikace standardů, konference, odkazy na SW, referenční nástroje, odkazy (obnovováno podle potřeby)
What is XML? na XML.COM: http://www.xml.com/pub/a/98/10/guide0.html - jeden z úvodních článků ke XML
XML: XML Quick Syntax Reference Card - výborná stručná referenční karta
výborná komentovaná verze téhož na XML.COM (Annotated XML): http://www.xml.com/pub/a/axml/axmlintro.html
Úvod do korpusové lingvistiky a počítačové lexikografie - K. Pala, P. Rychlý
Technologie informačních systémů II - J. Král
Nástroje pro korpusy - P. Rychlý
Dialogové systémy - I. Kopeček
Laboratoř elektronických a multimediálních aplikací - P. Sojka
Textové informační systémy - P. Sojka
Softwarové elektronické publikace II - P. Sojka
Balík XSLT2 (Jan Pavlovič) Návod k modulu xslt2
Základním požadavkem kladeným na každý XML dokument je, že musí být dobře utvořen (well-formed).
Obsahuje prolog (hlavičku) a
právě jeden, tzv. kořenový element.
Dále může před a po kořenovém elementu obsahovat instrukce pro
zpracování, komentáře atd. (Misc
)
It meets all the well-formedness constraints given in the specification.
Musí vyhovovat všem pravidlům pro správné utvoření uvedeným ve specifikaci.
Each of the parsed entities which is referenced directly or indirectly within the document is well-formed.
Totéž platí pro každou analyzovanou (parsovanou) entitu přímo nebo nepřímo odkazovanou v dokumentu.
Podívejte se na tutoriál základů XML v češtině
dokument členíme na elementy (jedne z nich je kořenový - root), jejich atributy, textové uzly v elementech, instrukce pro zpracování, notace, komentáře
jeden logický dokument může být uložen ve více fyzických jednotkách - entitách; vždy alespoň v jedné - tzv. entitě dokumentu - document entity.
uzel (element, atribut, textový uzel, instrukce pro zpracování, komentář)
element
atribut
textový uzel
instrukce pro zpracování
komentář
Dále viz např. Koskův seriál o XML na http://kosek.cz/clanky/swn-xml/index.html
Jsou objekty ohraničené počáteční a koncovou značkou - start and end tag, tedy obecně:
<tagname ...tag_attributes...>
tag_content
</tagname>
Je-li obsah prázdný (žádné dceřinné elementy ani textový obsah), pak píšeme pouze značku prázdného elementu - empty element tag, např.:
<tagname ...tag_attributes... />
Nesou "dodatečné informace" k elementu - např. jeho ID, požadované formátování - styl, odkazy na další elementy...
Konceptuálně by bylo možné atributy nahradit elementy, ale z důvodu přehlednosti obvykle používáme obojí.
Obsah atributu na rozdíl od obsahu elementu není nijak (na úrovni obecných zásad XML standardů) dále strukturován.
Občas se u některých značkování vyskytne snaha o strukturaci obsahu atributů, to však obecně vede k více problémům, než řeší...
Rovněž fyzické pořadí zápisu více atributů v jednom elementu nemá na logický model vliv.
Atribut je tvořen jménem a hodnotou.
Atributy zapisujeme do počáteční značky elementu (který může být i prázdný).
Hodnota je vždy vložena v uvozovkách či
apostrofech a od jména ji dělí znak rovnítka
(=
).
Pro názvy atributů platí stejná omezení jako pro názvy elementů.
V rámci jednoho elementu nejsou přípustné dva atributy se stejným jménem.
Instrukce pro zpracování
(processing-instruction) píšeme do značek
<?
target
content
>
Informují aplikaci o postupu či nastavení nutném pro zpracování daných XML dat. Nepopisují (nepředstavují) obsah, ale zpracování dokumentu.
<?xsl-stylesheet href="mystyle.xsl">
Notace (notation) píšeme do značek
<!NOTATION name declaration >
Slouží zejména k popisu binárních (non-XML) entit - např. obrázků GIF, PNG,...
Podobně jako v HTML - komentář (comment)
píšeme do značek <!--text komentáře-->
Obsahem komentáře je text komentáře
, nikoli
celý komentář i se značkami
Komentář nebývá obvykle pro zpracování významný, ale záleží na aplikaci - může např. uchovávat značky Servlet-side Includes (SSI)
Parsery by proto měly komentáře zpracovávat - předávat dále.
Např. SAX parsery však tak nečiní!!! (resp.
činí až v rozšířené verzi SAX2, v Javě balík
org.xml.sax.ext
).
Entita je základní jednotkou fyzické stavby dokumentu. Odpovídá řetězci, souboru...
Parsery by měly entity zpracovávat tak, aby aplikace nemusela o entitách "nic tušit".
Podrobné informace k syntaxi se dozvíme v následující kapitole Standardy rodiny XML
Specifikace povoluje na určitých místech v XML dokumentech (např. název elementu, obsah atributu...) jen některé znaky.
Vzhledem k internacionalizaci a nutnosti zvládnout i exotické jazyky je třeba znát, co se čím myslí.
Oba standardy se zabývají podobnými problémy: řeší znakové sady s více než 256 znaky.
Původní návrh tzv. 16bitového Unicode: až 64 K znaků, stačí pro evropské, nestačí pro světové jazyky (např. dnes frekventovaná čínstina).
32bitový Unicode: pokrývá znaky už "na věky".
V současnosti se z 32bitové škály většinou používá jen tzv. Basic Multilingual Plane (BMP) pokrývající většinu jazyků.
V XML je možné pro názvy (nonterminál kvalifikovaná jména - QName) použít znaky z BMP.
Všechny aplikace XML (zejména aplikace univerzální, parsery) musejí být schopny zpracovat znaky Unicode bez ohledu na kódování.
Přesto je dobré znát nejběžnější kódování:
osmibitová, tradiční: US-ASCII, ISO-8859-2 (ISO Latin 2), Windows-1250 (=Cp1250) - kódování jen vybrané podmnožiny Unicode.
UTF-8: kódování všech znaků Unicode, každý znak na 1-6 bajtech, US-ASCII na jednom bajtu, "čeština" na dvou.
UTF-16: princip stejný jako UTF-8, ale základní ukládací jednotkou je dvoubajtové slovo (16 bitů)
UCS-2: přímé kódování Unicode, čísla znaků z BMP se zapíší přímo jako dva bajty
UCS-4: dtto, ale pro celý Unicode a na 4 bajtech - neúsporné, 4 bajty i pro US-ASCII, evropské jazyky...
Pro XML mají klíčový význam UTF kódování, zejména UTF-8 (ale parsery musejí umět obě).
Přípustné jsou jakékoli UNICODE znaky po x10FFFF (kromě xFFFE, xFFFF a rozmezí xD800 - xDFFF).
jména (names) musí
být složena ze nemezerových znaků: číslice, písmena,
.
(tečka) -
(pomlčka, minus)
_
(podtržítko) :
a dalších,
musí začínat písmenem nebo _
:
Kódování těchto UNICODE znaků není podstatné.
Jako implicitní - není-li v prologu (hlavičce), např.
<?xml version="1.0"
encoding="Windows-1250"?>
uvedeno jinak - se používá UTF-8 nebo UTF-16.
Rozlišení UTF-8 a UTF-16 se děje pomocí prvních dvou bajtů dokumentové entity (tj. souboru), pomocí tzv. byte-order-mark xFFFE
Není-li uvedena, předpokládá se UTF-8, čili UTF-8 je implicitní kódování UNICODE znaků v XML dokumentech.
Teoreticky by tedy bylo možné z obsahu souboru rozpoznat přesně, o jaké kódování se u XML dokumentu jedná...