[W3C - http://www.ucc.ie/xml/ ]

Peter Flynn

Často kladené otázky o XML

Přeložil: Miloslav Nič [MNaaaa]

Obecné otázky

Co je XML?

XML znamená Extensible Markup Language (rozšiřitelný značkovací jazyk). Rozšiřitelný proto, že se nejedná o pevně stanovený formát jako HTML. Tento jazyk byl vytvořen tak, aby umožnil využití SGML na WWW.

XML není jediný, předdefinovaný značkovací jazyk. Jedná se o meta-jazyk, tedy o jazyk pro tvorbu jiných jazyků, který vám umožní vytvoření vlastních značkovacích jazyků. Předdefinované značkovací jazyky jako HTML definují způsob, jak popsat informace v jednom specifickém typu dokumentů, XML vám dovolí definovat vlastní přizpůsobené značkovací jazyky pro různé druhy dokumentů. Je toho schopen proto, že je napsán v SGML, mezinárodním standardním meta-jazyku pro značkování.

Na co je XML dobrý?

XML byl vytvořen tak, aby "umožnil snadné a přímočaré využití SGML na webu: snadné definice typů dokumentů, snadnou tvorbu a správu SGML-definovaných dokumentů a jejich snadný přenos a sdílení po síti."

Definuje "nesmírně jednoduchý dialekt SGML, který je zcela popsán v XML Specifikaci. Cílem je umožnit vysílání, příjem a zpracování SGML na webu stejně, jak je dnes možné s HTML.

"Z tohoto důvodu byl XML vytvořen tak, aby jej bylo možné snadno implementovat a aby mohl spolupracovat se SGML a HTML.

Co je SGML?

SGML je Standard Generalized Markup Language (standardní zobecněný značkovací jazyk) (ISO 8879), mezinárodní standard pro popis struktury a obsahu různých druhů elektronických dokumentů. SGML FAQ naleznete na adrese http://www.infosys.utas.edu.au/info/sgmlfaq.txt. Tento FAQ je zasílán každý měsíc do diskuzní skupiny comp.text.sgml a SGML stránky naleznete na http://www.oasis-open.org/cover/sgml-xml.html

ISO standardy jsou řízeny Mezinárodní Organizací pro Standardy se sídlem v Ženevě a jsou přijímány hlasováním zástupců národních komisí pro standardy z každé země

Reprezentace zemí v ISO není předmětem tohoto kompendia.

Co je HTML?

HTML je HyperText Markup Language (Hypertextový značkovací jazyk) (RFC 1866), specifická aplikace SGML používaná na WWW.

Neznamená XML, SGML a HTML stejnou věc?

Ne tak docela. SGML je "mateřský jazyk", který je používán pro popis tisíců různých typů dokumentů v řadě oblastí lidské aktivity, od přepisu starovkých irských manuskriptů až po technickou dokumentaci bombardérů stealth

HTML je pouze jedním z těchto typů dokumentů, ten, který se nejčastěji používá na WWW. Definuje jednoduchý, pevně stanovený typ dokumentu, se značkováním vytvořeným tak, aby uspokojil požadavky běžných technických a úředních dokumentů, s názvy kapitol, odstavci, seznamy, obrázky atd.. Nabízí rovněž některé možnosti pro hypertext a multimedia.

XML je zkrácenou verzí SGML, takže vám umožní snažší definici vlastních typů dokumentů a rovněž programátoři mají usnadněnou úlohu při psaní programů na jeho zpracování. Vynechává složitější a méně používané části SGML, ale díky tomu se pro něj snáze píší aplikace, je snáze srozumitelný a vhodnější pro přenos na WWW. Jedná se však stále o SGML, XML soubory mohou být zpracovávány a ověřovány stejně, jako ostatní SGML soubory (viz otázka na XML software).

Pro programátory může být užitečné uvažovat o XML jako o SGML-- spíše než HTML++.

Jaký je rozdíl mezi SGML/XML a C nebo C++?

C a C++ (a další jako Fortran, Pascal, Basic, Java a tucty jiných) jsou programovací jazyky, se kterými specifikujete výpočty, akce a rozhodnutí, která se mají vykonat:

do when @front(@date,6) is equal "01-Apr" print "April Fool!\n" else print @days(@datesub("25-Dec",@date)),\ " shopping days to Christmas\n" done

SGML a XML jsou značkovací jazyky, se kterými můžete navrhnout způsoby popisu informací, obvykle pro skladování, přenos nebo zpracování v programu:

<p>Byl to týden po <událost třída="festival">Vánocích</událost> ale <jméno třída="osoba">Karlova</osoba> mysl se stále zaobírala <jméno třída="ososba">Janou</jméno></p>

Sám o sobě, soubor se SGML nebo XML textem (včetně HTML) neznamená nic. Potřebujete nějaký program, který s ním dokáže pracovat.

Kdo je zodpovědný za XML?

XML is a project of the World Wide Web Consortium (W3C), and the development of the specification is being supervised by their XML Working Group. A Special Interest Group of co-opted contributors and experts from various fields contributed comments and reviews by email.

XML je projektem World Wide Web Consortium (W3C) a vývoj specifikace má na starosti její XML pracovní skupina. Zvláštní zájmová skupina přibraných spolupracovníků a expertů z různých oblastí přispívá e-mailem.

Proč je XML tak důležitý?

Odstraňuje dvě překážky, které zdržují rozvoj internetu:

XML zjednodušuje volby v SGML a umožňuje vývoj uživatelem definovaných dokumentů pro WWW.

Jak může XML učinit SGML jednodušší a přitom dovolit vytváření vlastních typů dokumentů?

Aby SGML zjednodušil, XML znovu nadefinoval některé vnitřní hodnoty a parametry SGML, a odstranil velké množství složitějších a často i méně používanějších možností, které kladly velké nároky na psaní programů (viz http://www.w3.org/TR/NOTE-sgml-xml-971215).

Ačkoliv si ponechává všechny strukturovací schopnosti, které umožňují definovat a spravovat vlastní typy dokumentů, XML zavádí nový typ dokumentu, který nevyžaduje použití předdefinovaného popisu typu dokumentu (ve své podstatě můžete vytvářet svůj vlastní syntax, pokud se přesně držíte pravidel). Porovnejte s "platný" and "správně-zformovaný" dokument, a jak definovat vlastní typy dokumentů v Sekci pro vývojáře.

Proč nestačí rozšiřovat HTML?

Již nyní je HTML přetíženo tucty zajímavých, ale často nekompatabilních vylepšení od různých výrobců, neboť nabízí pouze jedinou možnost pro posání vaší informace.

XML umožní skupinám lidí nebo organizacím vytvořit jejich vlastní přizpůsobený značkovací jazyk pro výměnu informací v jejich oblasti zájmu (hudba, chemie, elektronika, turistika, finance, surfování, těžba ropy, jazykověda, vaření, pletením, mapování hvězd, historie, inženýrství, chování králíků,matematika, atd.)

HTML již dosáhlo limitu své užitečnosti jako způsob popisu informací a zatímco i nadále bude hrát významnou roli v oblastech, kde se nyní využívá, mnoho nových aplikací vyžaduje robustnější a flexibilnější infrastrukturu.

Proč potřebujeme všechno to SGML? Proč nestačí používat Word nebo Note

Informace na síti, která propojuje mnoho různých druhů počítačů, musí být použitelná všemi. Veřejné informace nemohou být omezeny na jeden typ, model nebo výrobce, nebo předat kontrolu svého datového formátu do soukromých rukou. Je rovněž užitečné, když jsou takové informace ve formě, která může být využita mnoha různými způsoby, protože tímto způsobem je minimalizován ztracený čas a úsilí. Soukromé datové formáty, bez ohledu na to jak dobře jsou dokumentovány nebo zveřejněny, zde zkrátka nepředstavují alternativu, jejich kontrola stále spočívá v soukromých rukou takže mohou být změněny nebo opuštěni bez jakéhokoliv oznámení.

SGML je mezinárodní standard pro definování takovýchto aplikací, ale ti, kteří potřebují alternativu založenou na jiných programech mohou zcela svobodně implementovat něco podobného za použití tohoto systému, zejména pro soukromé použití.

Kde naleznu více informací o XML?

Na síti je dostupná XML Specifikace a další dokumentace z W3C; XML Web pages s podrobným seznamem online referencí SGML pages Robina Covera; a souhrn a zkondenzovaný FAQ od Tim Braye.

The items listed below are the ones I have been told about: please mail me if you come across others.

Further details of these on the GCA's Web site.

There are lists of books, articles, and software for XML in Robin Cover's SGML and XML pages. That site should always be your first port of call: please look there first before using the form in this FAQ to ask about software or documentation.

Kde mohu diskutovat implementaci a rozvoj XML?

Please Read The Fine Documentation which you will be sent when you join a mailing list, as it contains important information, particularly about what to do when your email address changes.

There is a mailing list called xml-dev for those committed to developing components for XML. You can subscribe by sending a 1-line mail message to majordomo@ic.ac.uk saying:subscribe xml-dev your@email.address(substituting your correct email address). To unsubscribe, send a 1-line message to the same address saying unsubscribe xml-dev your@email.addressThe list is hypermailed for online reference at http://www.lists.ic.ac.uk/hypermail/xml-dev/. Note that this list is for those people actively involved in developing resources for XML. It is not for general information about XML (see this FAQ and other sources) or for general discussion about SGML implementation and resources (see below).

There is a general-purpose mailing list called XML-L for public discussions: to subscribe, send a 1-line mail message to LISTSERV@listserv.heanet.ie sayingsubscribe XML-L forename surname(substituting your own forename and surname). To unsubscribe, send a 1-line message to the same address sayingunsubscribe XML-L(Note that LISTSERV lists like XML-L don't need you to give your email address: they read it from your email headers.) You can access XML-L and its archives, as well as subscribe and unsubscribe interactively, from http://listserv.heanet.ie/xml-l.html.

Please note that there is a lot of inaccurate and misleading information published in print and on the Web about subscribing to mailing lists. The information given here is correct - use it.

There are mailing lists being set up in other languages:

The Usenet newsgroup comp.text.xml is for discussions of XML. If this is not available on your local news server, ask your Internet Provider to add it, or use a Web interface like DejaNews.

Uživatelé SGML (včetně HTML browserů)

Co potřebuji k použití XML

Běžnému uživateli Internetu stačí prohlížeč, který dokáže pracovat s XML (viz otázka na prohlížeče). Nezapomínejte, že XML je ve stádiu implementace, některé vlastnosti dosud nejsou definovány nebo naprogramovány.

S XML browsery si můžete prohlédnout prvé vlaštovky ve světě XML, jako Jon Bosakovi hry od Shakespeara a molekulové experimenty s Chemical Markup Language (CML). Další příklady uvádí http://www.oasis-open.org/cover/xml.html#examples.

Pokud chcete vytvářet vlastní XML dokumenty, přečtěte si autorskou kapitolu a kapitolu pro vývojáře.

Proč mám používat XML místo HTML?

Kde mohu sehnat XML browser?

Uvědomte si, že XML specifikace je ještě nová, takže většina z toho, co seženete je experimentální povahy. Stejně jako s HTML, nebude existovat pouze jeden prohlížeč, ale bude jich mnoho. Jelikož ovšem potenciální množství XML aplikací je neomezené, nedá se očekávat, že by vznikl prohlížeč, který by zvládl naprosto vše.

Obecnější část XML, např. parsování, správa struktury, prohledávání, formátování, jsou začleňovány do obecně použitelných knihoven nebo nástrojů, aby vývojáři měli ulehčenou úlohu při psaní konsistentních XML aplikací. Tyto aplikace pak mohou být přizpůsobeny konkrétním podmínkám přidáním syntaxe nebo s použitím jazyků jako Java lze napsat pomocné programy pro běžné prohlížeče, které mohou být staženy z Internetu, často i bez povšimnutí koncového uživatele.

Konzultujte rovněž kapitolu pro autory a vývojáře, a podrobnější soupis na XML stranách na http://www.oasis-open.org/cover/xml.html.

Musím přejít od SGML a HTML na XML?

Ne. Existující SGML a HTML software bude dále pracovat s existujícími soubory. Ale stejnš jako s každým vylepšením, pokud budete chtít prohlížet nebo zpracovávat XML soubory, budete potřebovat XML software, až bude dostupný.

Autoři SGML (včetně autorů HTML)

Nahradí XML HTML?

Ne. XML samo o sobě nenahradí HTML: místo toho poskytuje alternativu, která umožňuje definovat vlastní sadu formátovacích prvků. Očekává se, že HTML ještě bude nějaký čas běžně používáno a Definice Typu Dokumentu pro HTML bude dostupná v XML stejně, jako je nyní v původní SGML. XML je navrženo tak, aby psaní DTD bylo mnohem jednodušší než s plným SGML. (Viz otázky na DTD, co jsou a proč je budete potřebovat.)

Probíhají práce na XML verzi HTML a dalších populárních DTD, ale možná bude třeba vyčkat na to, až stabilnější programy budou k dispozici. Sledujte oznámení na comp.text.sgml, comp.text.xml, XML-L, a xml-dev

Jak vypadá XML dokument zevnitř?

Jeho základní struktura se velmi podobá ostatním aplikacím SGML, včetně HTML. XML dokumenty mohou být velmi jednoduché, bez DTD a přímočaře rozvrženy podle vašeho návrhu.

<?xml version="1.0" standalone="yes"?> <conversation> <greeting>Hello, world!</greeting> <response>Stop the planet, I want to get off!</response> </conversation>

Nebo mohou být komplikovanější, se specifikovaným DTD

<?xml version="1.0" standalone="no" encoding="UTF-8"?> <!DOCTYPE titlepage SYSTEM "http://www.frisket.org/dtds/typo.dtd" [<!ENTITY % active.links "INCLUDE">]> <titlepage> <white-space type="vertical" amount="36"/> <title font="Baskerville" size="24/30" alignment="centered">Hello, world!</title> <white-space type="vertical" amount="12"/> <!-- In some copies the following decoration is hand-colored, presumably by the author --> <image location="http://www.foo.bar/fleuron.eps" type="URL" alignment="centered"/> <white-space type="vertical" amount="24"/> <author font="Baskerville" size="18/22" style="italic">Vitam capias</author> </titlepage>

Nebo mohou ležet někde mezi, mnoho bude záležet na tom, jak definujete vaše DTD a k jakému účelu bude využíváno. Podívejte se na otázku na platné a správně-zformátované soubory..

Jak XML zachází s mezerami, tabelátory, znaky nových řádků?

Pravidla pro tyto znaky se lyší od SGML. Všechny znaky musí parser předat nezměněné do aplikace (prohlížeč, formátovací program, ...). To znamená:

<chapter> <section> <title> My title for Section 1. </title> <p> ... </p> </section> </chapter>

The parser must, however, still inform the application that white-space has occurred in element content, if it can detect it. (Users of standard SGML may recognize that this information was not in the ESIS, but it is in the grove.) In the above example, the application will receive all the pretty-printing linebreaks, TABs, and spaces between the elements as well as those embedded in the section title. It is the function of the application (browser, formatter, viewer, etc) to decide which type of white-space to discard and which to retain.

Které části XML dokumentu rozlišují velká a malá písmena?

Všechny, značky i text. Tím se významně liší od HTML a většiny ostatních SGML dokumentů. Tato změna byla zavedena proto, aby bylo umožněno používat ve formátovacích značkách ne-ASCII charaktery.

Jak mohu mé existující HTML soubory používat v XML?

Učiňte z nich správně formátované dokumenty bez DTD a napište k nim tabulku stylů. Použití DTD v XML je volitelné, ale HTML soubory převedené do XML formátu musí být v současné době bez DTD, protože existuje pouze několik fungujících verzí DTD pro HTML v XML. (Musí být podstatně pozměněny, protože je nutné odstranit ty prvky SGML, které byly vyloučeny z XML.)

Je nutné upravit existující HTML soubory tak, aby byly správně zformátované. XML nedovoluje minimalizaci koncových značek (chybějící </p> atd.), která je dovolena ve většině HTML DTD. Jako příprava na XML slouží program HTML Tidy, který automaticky opraví některé formátovací chyby, které zanechávají některé HTML editory.

Pokud chcete přenést vaše soubory zcela mimo HTML, zkontrolujte pilotní projekt CommerceNet (http://www.xmlx.com/) pro výměnu XML DTD a pilotní FPI server http://www.ucc.ie/cgi-bin/public pro běžné SGML DTD, které vám v začátcích pomohou.

Pokud jste vytvořili vaše HTML soubory tak, aby splňovaly některé HTML DTD a jejich validace proběhne bez problémů, mohou být převedeny následujícím způsobem:

Buďte si vědomi toho, že mnoho HTML browserů neakceptuje EMPTY XML prvky, tedy ty, které končí s />. Alternativu nabízí doplňková koncová značka u všech EMPTY prvků. Tak např. <IMG src="foo.gif"> se stává <IMG src="foo.gif"></IMG>.

Pokud máte mnoho validních HTML souborů, můžete napsat skript v jazyce, který rozumí SGML/XML, jako je Omnimark, Balise, SGMLC, nebo systém využívající SGML knihovny Perl, Python, nebo Tcl),nebo dokonce maker textového editoru, pokud ovšem víte, co děláte.

Pokud vaše HTML soubory nejsou validní (většina HTML souborů vytvořených editory není validní), budou muset být s velkou pravděpodobností převedeny manuelně, ačkoliv pokud jsou odchylky pravidelné, mohou být soubory ve skutečnosti téměř správně formátované a skript může být použitelný. Při kontrole validity zkontrolujte:

Validní, ale zbytečné značkování může být nutné odstranit před konverzí (prázdné odstavce, prázdné tabulky, neviditelné gif obrázky k dosažení mezer). XML používá tabulky stylů, takže je nebudete potřebovat.

V pravidlech pro 'správně zformátované' XML soubory naleznete podrobné údaje o tom, co musíte zkontrolovat při konverzi do XML.

Existuje XML verze HTML?

Několik verzí se připravuje, žádná však dosud není v konečné podobě:

Pokud je XML podmnožinou SGML, mohu používat XML soubory přímo v SGML programech

Ano. Za předpokladu, že používáte SGML software, který si je vědom nových WebSGML Adaptací ISO 8879 (vlastnosti nutné pro podporu XML, jako je speciální tvar pro EMPTY prvky; některé aspekty SGML deklarací jako NAMECASE GENERAL NO; několikanásobné deklarace atributů, atd.).

Další možností je použít SGML DTD, které vám dovolí vytvořit SGML dokument, ale které nepoužívá prázdné prvky. Poté odstraníte DocType deklaraci, takže se z něj stane správně zformátovaný XML soubor bez DTD

V současnosti jen několik nástrojů nechává XML soubory nezměněny, ale vše se mění. The nsgmls parser má přepojení do XML modu pro použití s Jade a první XML editory začínají být dostupné (software)

Umím vytvářet a publikovat v HTML. Mohu se naučit XML snadno?

Ano, velmi snadno. V současnosti ale chybí návody, jednoduché nástroje a více příkladů XML dokumentů. Správně formátované XML dokumenty mohou být velmi podobné HTML s výjimkou několika drobných, ale velmi podstatných změn.

Velmi podstatným praktickým rozdílem je to, že v XML se musíte držet pravidel. HTML prohlížeče vám dovolí vytvářet nesprávné dokumenty, protože se snaží vyhnout všem problémům, v XML musí být všechny vaše soubory správné nebo nebudou vůbec použitelné.

Bude možné používat v XML znaky nepocházející z latinky

Ano. XML specifikace přímo uvádí, že XML používá ISO 10646, mezinárodní standardní 31-bitový repertoár znaků, který pokrývá většinu lidských(a některé další) jazyky. V současné době se shoduje s Unicode.

Specifikace uvádí (2.2): "Všechny XML procesory musí přijímat kódování UTF-8 a UTF-16 z ISO 10646 ...". UTF-8 je kódování Unicode do 8-bitových znaků. Prvních 128 je stejných jako ASCII, zbytek je použit na kódování Unicode do sekvencí mezi 2-6 byty. První oktet UTF-8 je tedy shodný s ISO 646 IRV (ASCII), takže můžete dále používat ASCII pro angličtinu a další jazyky bez háčků a čárek, které používají latinku. UTF-8 je nekompatabilní s ISO 8859-1 (ISO Latin-1) za kódem 126 (konec ASCII). UTF-16 je stejné jako UTF-8, ale využívá schema, ve kterém jsou znaky kódovány jako dva 16-bitové charaktery.

XML Specifikace popisuje, jak ve vašem XML souboru určit použité kódování.

UCS-4 lze legálně specifikovat v SGML nebo XML pouze v případě, pokud program implementuje WebSGML Adaptace ISO 8879. Tato adaptace umožňuje použití čísel obsahujících více než osm číslic v SGML deklaraci.

"Bez ohledu na použité kódování, jakýkoliv charakter ze seznamu ISO 10646 může být uveden ve své decimální nebo hexadecimální notaci". Bez ohledu na použité kódování tedy můžete použít libovolný charakter ze seznamu ISO 10646, pokud použijete &#dddd; (decimální notaci)nebo &#xHHHH; (hexadecimální notaci, velkým písmem). Terminologie může být značně komplikovaná stejně jako použitý kód, viz. ISO 10646 Concept Dictionary. Rick Jelliffe připravil ISO seznam v XML.

Co je Definice Typu Dokumentu(DTD) a kde mohu nějakou získat

DTD je soubor nebo několik souborů použitých najednou, které obsahují formální definici daného typu dokumentu. Určuje, jaká jména lze použít pro prvky v dném dokumentu, kde se mohou vyskytovat a jaké mají vzájemné vztahy. Pokud chcete například specifikovat prvek <Seznam>, který obsahuje jeden nebo více prvků <Položka>, část vašeho DTD obsahuje něco jako <!ELEMENT Seznam (Položka)+> <!ELEMENT Položka (#PCDATA)> Tento fragment definuje seznam jako prvek, který obsahuje jeden nebo více položek (význam znaménka plus) a položky mohou obsahovat pouze text, žádné prvky. XML je formální specifikační jazyk. Při jeho použití XML procesor automaticky zpracuje specifikovaný DTD a tuto informaci poté použije pro identifikaci všech prvků a jejich vztahů tak, aby další programy (prohlížeče, vyhledávací programy, databáze, tiskové programy) je mohly využít. Výše uvedený fragment vám například dovolí vytvořit seznam jako:<Seznam><Položka>Čokoláda</Položka><Položka>Hudba</Položka><Položka>Surfování</Položka></Seznam>. Způsob, jakým se váš dokument zobrazí na obrazovce závisí na vaší tabulce stylů: obvykle nemusíte v XML specifikovat žádnou formátovací instrukci tak, jako bylo nutné s HTML před nástupem tabulek stylů.

Ve skutečnpsti DTD poskytuje aplikaci předběžnou informaci o jménech a strukturách, které se mohou v dokumentu vyskytnout. Pokud použijete DTD, máte jistotu, že všechny dokumenty stejného typu budou podléhat stejným pravidlům.

V současnosti existují v mnoha různých oborech tisíce SGML DTD (SGML). Mnoho z nich je možné bez omezení používat, můžete si napsat i vlastní DTD. Stejně jako s jinými jazyky, musíte se to nejdříve naučit, např. podle knihy Developing SGML DTDs, Maler and el Andaloussi, Prentice Hall, 1997, 0-13-309881-8), XML je ale mnohem jednodušší než plný SGML, viz seznam omezení uvádějící vynechané části. Současné SGML DTD musí být převedené do XML, aby je bylo možné využít pro XML systémy: přečtěte si otázku na převádění SGML DTD do XML. Lze očekávat, že oblíbené DTD budou dostupné i ve formátu XML.

Zaslechl jsem o alternativách DTD. Co je to schema?

Bob DuCharme píše: "Mnoho XML vývojářů není spokojeno se syntaxí DTD, které uvádí XML specifikace, ze dvou důvodů: Zaprvé cítí, že pokud jsou XML dokumenty tak dobré na popis strukturovaných informací, popis typu dokumentu (jeho schema) by měl být rovněž XML dokument a neměl by používat svůj vlastní syntax. Díky tomu by byl nejen více konsistentní, bylo by rovněž snažší editovat a manipulovat se schematy s běžným nástroji na editaci XML. Zadruhé cítí, že tradiční syntax DTD nedává tvůrcům schemat dostatečné nástroje pro přesnou specifikaci dokumentu, není třeba možné určit, že daný prvek může obsahovat pouze kladné celé číslo, že nesmí být prázdný, nebo že musí nabývat pouze jedné z několika přesně specifikovaných možností. Pokud by to bylo možné, bylo by snažší vyvíjet nové programy, protože programátor by již nemusel psát tolik procedur na kontrolu chyb."

Uživatelé, kteří mají zkušenosti s databázemi nebo počítačovou vědou by si měli uvědomit, že SGML systémy, a tedy i XML, nejsou systémy na správu databází, ale na značení textu. Ačkoliv je zde mnoho podobností, jako ty popsané výše, některé koncepty z jednoho oboru v druhém vůbec neexistují. XML neobsahuje některé rysy databází s DBSM nemá některé možnosti značkování textů.

"Několik skupin navrhlo W3C alternativní způsoby pro vyjádření schemat dokumentů. Spolu s možností omezení typu dat a dalších rysů, navrhují využít současné tendence ve vývoji software, jako jsou objektově orientované metodologie. W3C pracovní skupina pro schemate v současné době zvažuje tyto návrhy a vyvíjí vlastní návrh, založený na nejužitečnějších funkcích, které obsahují současné návrhy, a na návrzích svých členů."

Jak ovlivní XML odkazy v mém dokumentu?

Odkazovací schopnosti XML systémů jsou na mnohem vyšší úrovni než v HTML. Současné HREF budou stále užitečné, ale nová odkazovací technologie je založena na zkušenostech při rozvoji dalších standardů včetně hypertextu, jako je TEI a HyTime, které umožňují správou obousměrných a multisměrných odkazů, stejně jako odkazy na části textových dokumentů (vlastních nebo cizích). Tyto funkce byly dostupné pro uživatele standardního SGML v prohlížečích jako DynaText, Panorama a Multidoc Pro již mnoho let, takže byla nashromážděna řada zkušeností při jejich použití.

The XML Linking Specification (XLink) and XML Extended Pointer Specification (XPointer) documents contain a detailed draft specification. An XML link can be either a URL or a TEI-style Extended Pointer, or both. A URL on its own is assumed to be a resource (as with HTML); if an XPointer follows it, it is assumed to be a sub-resource of that URL; an XPointer on its own is assumed to apply to the current document.

XML specifikace odkazů (XLink) a XML specifikace rozšířených odkazů (XPointer) obsahují podobný popis připravovaných standardů. XML odkaz může být URL nebo ukazatel ve stylu TEI nebo oba druhy najednou. Samotné URL je zdrojem (stejně jako v HTML), pokud ji následuje ukazatel, jedná se o bližší specifikaci místa v udaném dokumentu, a pokud je uveden samotný ukazatel, jeho pole působnosti je současný dokument.

XPointer vždy začíná s #, ?, or |. # a ? znamenají to samé jako v HTML, | naznačuje, jak dané místo nalézt ve zdroji, ale způsob provedení je ponechán na prohlížeči.

TEI Rozšířená notace ukazatelů (EPN) je mnohem všestrannější než adresy fragmntů na konci některých URL, protože dovoluje specifikovat přesné umístění odkazu a přitom využít strukturu samotného cílového dokumentu, nejen napevno udané orientační body jako je id. Například , druhý výskyt slova 'XPointer' dva odstavce před současnou polohou v tomto dokumentu lze specifikovat jako #ID(faq-hypertext)CHILD(2,*)(6,*).

the title of the question; <section id="faq-hypertext"> <TITLE>How will XML affect my document links?</TITLE>

the second paragraph:

If you view this file with Panorama or MultiDoc Pro you can click on the highlighted cross-reference button at the start of the example sentence, and it will display the locations in Extended Pointer Notation of all the links to it, including the word "XPointer" mentioned. (Doing this in an HTML browser is not meaningful, as they do not support bidirectional linking or EPN.) David Megginson has produced an additional function for Emacs/psgml which will deduce an XPointer for any location in an SGML or XML file.

Mohu psát matematické vzorce v XML?

Ano, pokud typ dokumentu, který používáte, s matematikou počítá. Uživatelé matematiky vytvářejí nové programy a návrh MathML (W3C), je XML aplikace. Rovněž by bylo možné vytvořit fragmenty XML z dřívějších specifikací HTML3, HTML Pro, ISO 12083 Math, OpenMath nebo i vlastní fragmenty. Některé SGML prohlížeče umožňují zobrazení matematiky, např. DynaText, Panorama,Multidoc Pro).

Náročnost zobrazení může sahat od výrazů jako xi, přes jednoduché jednořádkové rovnice jako E = mc2 až po komplikované rovnice. Techexplorer od IBM může být použit pro zobrazení matematckých výrazů psaných v TeX v běžných prohlížečích HTML a Amaya, testovací prohlížeč W3C experimentálně zobrazuje MathML.

Jak zachází XML s metadaty?

Protože XML dovoluje vytvářet vlastní značkovací jazyky, můžete plně využít rozšížených hypertextových možností (viz. Odkazy) XML pro skladovaní nebo odkazy na metadata v libovolném formátu (např. ISO 11179, Dublin Core, Warwick Framework, Resource Description Framework (RDF), a Platform for Internet Content Selection (PICS)).

XML neobsahuje žádné předdefinované prvky, protože XML je architektura a ne aplikace. Není proto úkolem XML určit, jak autoři mají nebo nemají specifikovat metadata. Můžete tedy použít jakoukoliv vhodnou metodu od jednoduchých atributů až po všechny prvky Dublin Core/Warwick Framework. Autoři prohlížečů mohou mít také vlastní doporučení a metody.

Mohu použít Javu, ActiveX, atd. v XML souborech?

To závisí na možnostech prohlížečů. XML popisuje informace. Skriptovací jazyky a jazyky pro vkládání funkcí jsou určeny pro software, který usnadňuje manipulaci s daty na počítači koncového uživatele.

XML určujě způsob, jak definovat syntaxi pro skriptovací jazyky. Jelikož se jedná o neutrální standard, jejich použití nedoporučuje ani nezakazuje, ani nedává žádnému z nich přednost.

Skriptovací jazyk pro XML je navržen v Extensible Style Language, XSL (viz. Tabulky stylů).

Mohu použít Javu pro tvorbu a správu XML souborů?

Ano, můžete použít libovolný programovací jazyk pro převedení dat do XML. Neustále přibívají nástroje pro takové konverze u mnoha současných programovacích prostředí a databázových systémů, které tyto úkoly usnadňují.

Jak kontrolovat vzhled?

XML vyžaduje tabulky stylů. Některé prohlížeče mohou poskytnout jednoduché přednastavené styly pro běžné prvky jako <Para>, nebo <List> obsahující <Item>, tabulky stylů ovšem dávají autorům mnohem lepší kontrolu zobrazení. Jelikož však tyto soubory mohou prohlížet různí uživatelé na různých zařízeních, autor nemůže vědět, co vše bude mít uživatel k dispozici (např. jaké fonty), obezřetnost je tedy na místě.

Arbortext XML Styler může být použit s XSL. Budete potřebovat AcitiveX a XSL codebase pro jeho použití.

Mnoho různých systémů tabulek stylů a jejich implementací existuje v soukromé sféře, kde jsou využívány zejména při psaní technické dokumentace.

Většina společností produkujících prohlížeče a editory slíbila podporu XSL, jelikož však jejich současné systémy mají řadu uživatelů, je otázkou, jak rychle k tomuto přechodu dojde.

Jak mohu použít grafiku v XML?

Grafika, to jsou normální odkazy, na jejichž konci není jiný text, ale grafický soubor. Mohou být tedy použity stejně jako ostatní odkazy s pomocí XLink a XPointer specifikace (viz. otázku na hypertext), včetně syntaxe odobné pro současné HTML obrázky. Mohou být také specifikovány s pomocí XML mechanismů NOTATION a ENTITY obdobně jako v klasickém SGML. Odkazy vám ovšem dávají mnohem lepší kontrolu při aktivaci odkazů, takže autor může například určit, zda se má obrázek zobrazit při nahrání stránky, nebo až po kliknutí uživatelem nebo jestli se má zobrazit v jiném okně, bez použití skriptovacího jazyka. Podporované grafické formáty si určí výrobci prohlížečů, XML nic nepředpokládá ani nezakazuje. GIF, JPG, TIFF, PNG a CGM, to je rozumné minimum, pracuje se na síťové vektorové grafice.

Peter Murray-Rust píše: "GIF a JPEGs zobrazují bitmapy (reprezentace obrázků v pixelech). Vektorové grafiky se týká aktivita W3C: (see http://www.w3.org/Graphics/Activity). Po dosažení shody bude možné přenášet grafiku přímo v XML souboru. Velké množství grafických objektů bude pak možné nahrávat mnohem rychleji a bez ztráty rozlišení."

Není možné vložit nezpracovaný grafický nebo jiný binární soubor přímo do XML, protože všechny byty, které náhodě připomínají syntax XML by způsobily zmatek.

Bob DuCharme dodává: "Všechna data v XML dokumentu musí být korektní XML. Je možné definovat vnější zdroj jako XML(parsed entity) nebo cokoliv ostatní(unparsed entity). Unparsed entity může být použito pro obrázky, zvuk, video, ... V dokumentu na ně může být odkázáno pouze s pomocí atributů, tak jako bitmapový obrázek v HTML je určen hodnotou atributu src u prvku img a není tedy součástí dokumentu. V XML dokumentu musí být tento atributdeklarován jako typu ENTITY a deklarace této entity musí uvádět typ NOTATION, protože pokud entity není XML, tak XML procesor musí vědět, co představuje.Příklad:

<?xml version="1.0"?> <!DOCTYPE dog [ <!NOTATION JPEG SYSTEM "Joint Photographic Experts Group"> <!ENTITY colliepic SYSTEM "lassie.jpg" NDATA JPEG> <!ELEMENT dog EMPTY> <!ATTLIST dog picfile ENTITY #REQUIRED> ]> <dog picfile="colliepic"/>

XLink a XPointer popisují další způsoby, jak adresovat jiné soubory, které neobsahují XML. Ty nabízejí širší možnosti pro určení polohy, vzhledu a chování těchto prvků uvnitř XML.

(Bylo by ovšem možné vložit zakódovaný binární soubor v sekci typu CDATA, například něco jako UUencode s odstraněným ] a <>, take bz nemohlo dojít k pochybnostem.)

Vývojáři a Implementátoři (včetně správů webu a serverů)

Kde nalézt dokumentaci.

Right here (http://www.w3.org/TR/REC-xml). Includes the EBNF. There are also versions in Japanese (http://www.fxis.co.jp/DMS/sgml/xml/); Spanish (http://www.ucc.ie/xml/faq-es.html); Korean (http://xml.t2000.co.kr/faq/index.html) and a Java-ised annotated version at http://www.xml.com/axml/testaxml.htm.

Eve Maler has released the DTD and documentation used for the spec itself: this is a new version that was used to encode the XML, XLink, XPointer, DOM, etc specifications. Be aware that this version is no longer compatible with the version that XML 1.0 uses; please send any comments or questions to Eve.

Co znamená 'bezDTD', 'validní' a 'správně-formátovaný'?

SGML používá DTD pro popis dostupných prvků v daném typu dokumentu. Tvorba a návrh DTD ovšem může být značně komplikovaná záležitost, takže XML byl navržen tak, aby byl použitelný s i bez DTD. Pokud tedy nepoužijete DTD, můžete vytvářet nové prvky, aniž je předem definujete, ztrácíte však možnost automatické kontroly.

Aby to bylo možné, soubor bez DTD určuje svoji syntaxi z polohy a názvů použitých prvků. Pokud ovšem XML aplikace zracovává takový soubor, musí být schopná porozumět struktuře dokumentu v okamžiku zpracovávání, protože žádné DTD ji o této struktuře neinformovalo předem. Bylo proto nutné změnit některá pravidla.

Tak např. HTML <IMG> prvek je definován jako "EMPTY", nemá koncový tag. XML program, který by procházel soubor bez DTD nemůže vědět, zda bude nebo nebude za <IMG> následovat </IMG>. Bylo nutné vytvořit koncept 'správně-formátovaných' souborů. Tím byl začátek a konec prvků, stejně jako obsah EMPTY prvků přesně udán.

Správně-formátované soubory

Všechny XML dokumenty, s i bez DTD musí být správně-formátované:

XML soubory bez DTD mají předdefinovány hodnoty &lt;, &gt;, &apos;, &quot& a &amp; , proto jsou použitelné i bez DTD. Validní XML soubory je musí explicitně deklarovat, pokud je chtějí použít. Pokud chcete použít více než těchto pět základních entit, nemusíte psát kompletní DTD, ale deklarujte je v interním subsetu XML souboru.

Validní XML

Validní XML soubory obsahují DTD jako ostatní SGML aplikace a řídí se podle ní. Musí být rovněž správně-formátované.

Validní soubor začíná jako všechny SGML soubory s DTD, tuto deklaraci však může předcházet XML deklarace, např. <?xml version="1.0"?> <!DOCTYPE advert SYSTEM "http://www.foo.org/ad.dtd"> <advert> <headline>...<pic/>...</headline> <text>...</text> </advert> XML specifikace definuje SGML deklaraci pro XML která je pevně dána pro všechny případy, tato deklarace byla vyjmuta z původní specifikace a je obsažena ve zvlášním dokumentu. XML verze udané DTD musí být dostupná pro XML procesor, buďto lokálně nebo na síti. Její polohu můžete určit s pomocí URL uvnitř Identifikátoru systému (System Identifier). Je rovněž možné poskytnout Formal Public Identifier, pokud je však použit, musí předcházet System Identifier, který musí být rovněž uveden (a použito klíčové slovo PUBLIC), <!DOCTYPE advert PUBLIC "-//Foo, Inc//DTD Advertisements//EN" "http://www.foo.org/ad.dtd">

Další atributy v XML deklaraci mají přednastaveny hodnoty version="1.0" a encoding="UTF-8".

Je lepší používat atributy nebo prvky?

Na tuto otázku neexistuje jednoduchá odpověď, záleží na tom, pro koho je daný typ dokumentu určen. Dva protipóly ukazuje následující příklad:

Velmi záleží na tom, jak hodláte s informacemi dále naložit a která metoda je pohodlnější pro zpracování. Platí empirické pravidlo, že po odstranění všech formátovacích prvků, vlastní text by stále měl být použitelný, jakkoliv nepohodlně. Pro výstup z databází nebo jiných programů ovšem čitelný výstup nedává smysl, takže mohou být i všechna data obsažena v atributech. (viz http://www.oasis-open.org/cover/elementsAndAttrs.html pro více informací)

Jaké jsou další změny mezi SGML a XML

Hlavními změnami prošly DTD. Za účelem zjednodušení syntaxe bylo potlačeno mnoho možnostíSGML ( viz. seznam

V názvech je povolena dvojtečka pro definice "namespace".

Jaký XML software mohu použít?

Details are no longer in this FAQ as they are now changing too rapidly to be kept up to date: see the XML pages at http://www.oasis-open.org/cover/xml.html.

For a detailed guide to examples of SGML and XML programs and the concepts behind them, see the editor's book Understanding SGML and XML Tools (Kluwer, 1998, 0-7923-8169-6).

For browsers see the question on XML Browsers and the details of the xml-dev mailing list for software developers. Bert Bos keeps a list of some XML developments in bison, flex, perl and Python.

Information for developers of Chinese XML systems can be found at the Chinese XML Now! website of Academia Sinica: http://www.ascc.net/xml/ This site includes an FAQ and test files.

Musím změnit programové vybavení serveru, abych mohl použít XML?

Pokud vás pouze zajímá správný MIME typ u vašich souborů .xml, zkonzultujte RFC2376). Vše, co potřebujete je editace souboru s mime-typy nebo jeho ekvivalentu.

Některé servery, např. Apache, umožňují jednotlivým uživatelům změnu z jejich vlastního adresáře souborem .htaccess .

XML bylo vytvořen tak, aby podporoval tabulky stylů a všestranný hypertext. XML dokumenty tedy mohou být doprovázeny množstvím podpůrných souborů stejně jako SGML: DTD, soubory entit, katalogy, tabulky stylů, které vyžadují vlastní MIME.

Pokud používáte skripty, které generují HTML a které mají spolupracovat s XML, musíte je modifikovat tak, aby generovaly žádané typy dokumentů.

Mohu stále používat programy na straně serveru?

Yes, so long as what they generate ends up as part of an XML-conformant file (ie either valid or just well-formed).

Can I (and my authors) still use client-side INCLUDEs?

The same rule applies as for server-side INCLUDEs, so you need to ensure that any embedded code which gets passed to a third-party engine (eg SDQL enquiries, Java writes, LiveWire requests, streamed content, etc) does not contain any characters which might be misinterpreted as XML markup (ie no angle brackets or ampersands): either use a CDATA marked section to avoid your XML application parsing the embedded code, or use the standard &lt;, &gt;, and &amp; character entity references instead.

Snažím se porozumět XML specifikaci. Proč má SGML (a XML) tak obtížnou terminologii?

Pokud mají implementace uspět, musí být terminologie přesná. Jeden z cílů XML (č.8) říká: konstrukční pravidla pro XML musí být stručná a výstižná. XML specifikace je tedy popsána v jazyce počítačové vědy, který často mate čtenáře z jiných oblastí, neboť používá dobře známá slova z angličtiny ve specifickém významu, který se může podstatně lišit od běžného použití.

Specifikace jen zřídka tyto termíny vysvětluje, aby splnila podmínku stručnosti. Neopakuje vysvětlení, pokud je toto vysvětlení již poskytnuto jinde.

Neurčitá terminologie ve specifikacích způsobuje zmatek, standardy tedy vyžadují standardní terminologii. Tento dokument není standardem, a proto používá terminologii, které není zcela přesná, ale srozumitelnější.

Those new to SGML may want to read something like the Gentle Introduction to SGML chapter of the TEI Guidelines.

Thanks to Bob DuCharme for suggestions and some bits from his book on the XML Spec.

Existuje API pro vývojáře XML?

Several are available or under development. Details of these and other XML software are held on the SGML/XML Web pages.

The big conversion and application development engines like Balise, Omnimark, and SGMLC are all working on adding XML. Details of SGML software of all kinds is on the SGML Web pages.

Jaké jsou souvislosti mezi XML a DOM?

The Document Object Model (DOM) (http://www.w3.org/TR/PR-DOM-Level-1) provides an abstract API for constructing, accessing, and manipulating XML and HTML documents. A "binding" of the DOM to a particular programming language provides a concrete API.

Is there a conformance test suite for XML processors?

James Clark has a collection of test cases for testing XML parsers at http://www.jclark.com/xml/ which includes a conformance test.

Jak mohu použít jedno DTD (nebo jeho část) v jiném?

This works exactly the same as for regular SGML. First you declare the entity you want to include, and then you reference it by name: Můžete stejným způsobem jako v SGML. :

<!ENTITY % mylists PUBLIC "-//Foo, Inc//ENTITIES Common list structures//EN" "dtds/listfrag.ent"> ... %mylists;

Tyto deklarace se tradičně nacházejí na začátku hlavního DTD, kde jsou snáze přístupné, není to však podmínkou.

Note that a URL is compulsory in XML for all external file references: standard rules for dereferencing URLs apply (assume the same method, server, and directory as the containing document). The URL can be supplied either as a System Identifier alone:<!ENTITY mydtd SYSTEM "http://www.foo.bar/~blort/my.dtd">or as a second parameter to a formal Public Identifier as in the earlier example.

I've already got SGML DTDs: how do I convert them for use with XML?

There are numerous projects being started to convert common or popular SGML DTDs to XML format (for example Patrice Bonhomme is working on an unofficial XML version of the TEI Lite DTD: details of that are discussed on the TEI-L mailing list).

The following checklist comes courtesy of Sean McGrath (author of XML By Example, Prentice Hall, 1998) [my italics]:

and many more: see the question on the bits of SGML that were removed for XML for a reference to the complete list;

And last but not least, CONCUR! There are some important differences betweeen the internal and external subset portion of a DTD in XML: marked sections can only occur in the external subset. Parameter Entities must be used to replace entire declarations in the internal subset portion of a DTD, eg the following is invalid XML:

<!DOCTYPE x [ <!ENTITY % modelx "(A|B)*"> <!ELEMENT x %modelx;> ]> <x></x>

Jak to vypadá s XML a EDI?

Výměna elektronických dokumentů (EDI) je používána v elektronickém obchodu již řadu let při výměně informací mezi obchodními partnery. Vyžadovala speciální komerční software, nyní je však snahou převést EDI do XML. Podrobnosti naleznete na adrese http://www.xmledi.com/ a vodítka poskytuje http://www.geocities.com/WallStreet/Floor/5815/guide.htm.