XBUP - Projekt XBUP-XMLTento dokument je součástí dokumentace projektu eXtensible Binary Universal Protocol. Obsahuje popis projektu pro vytvoření předpisu pro uložení XML dokumentu ve formátu XBUP.
1. Úvod
1.1. Motivace
1.2. Principy
2. Kódování XML dat
2.1. Hlavička dokumentu
2.2. Tag dokumentu
3. Související formáty
4. Výsledná specifikace formátu
Cílem XBUP-XML je vytvořit sadu pravidel pro převod standardních XML dokumentů do binárního tvaru protokolu XBUP a případná zohlednění sémantického významu dokumentu.
XML je textový formát pro reprezentaci obecně libovolný dat s popisem jednotlivých bloků pomocí slov nebo zkratek zvoleného jazyka. Textová reprezentace se značkovacími symboly však má některé nevýhody, především co se týká výkonu a velikosti. Proto se objevily snahy o vytvoření binární varianty XML, která by umožnila přenést kladné aspekty tohoto jazyka do binární podoby a přitom vyřešit ty negativní. Ačkoliv jsou cíle protokolu XBUP poněkud odlišné, přesto by mělo být možné jej vhodně využít i pro reprezentaci XML dokumentu v nějakém výhodnějším binárním tvaru.
Návrh předepisuje způsob, jakým reprezentovat jednotlivé textové položky XML se zachováním potřebné informace:
Následující varianta je pouze pro orientační představu o možném řešení. Nepočítá se s bílými znaky jinde než v elementech.
XML má následující typy položek:
Dokument začíná specifikačním blokem následovaným XML dokumentovým uzlem. Ten má následující položky:
XML/Document (0):První z odkazů ukazuje na položku XML Prolog s následujícími atributy:
XML/Prolog (1):Všechny položky jsou nepovinné. Položka MiscAfterDTPointer by měla být přítomna pouze pokud je DocTypePointer neprázdný. DocTypePointer odkazuje na položku typu ML/DocType. DeclarationPointer odkazuje na následující typ bloku:
XML/Declaration (2):Kde EncodingPointer odkazuje na položku typu "Text/Encoding Type" a StandalonePointer na položku typu Boolean.
Příklad: <?xml version="A.B" encoding="UTF-8"?>
Následuje popis struktury XML/Misc (3), která je typu List. Může obsahovat položky typu XML/Comment (4), nebo XML/Processing Instruction (5).
Položka typu XML/Comment je textový řetězec, který nesmí obsahovat dva znaky "--" za sebou. Processing instruction obsahuje ještě další atribut
XML/Processing Instruction (5)PITargetPointer odkazuje na řetězec XML/PITarget (6), který nesmí být roven "XML" bez ohledu na velikost znaků. PIStringPointer odkazuje na řetězec XML/PIString (7), který nesmí obsahovat za sebou znaky "?>".
Jsou dva základní elementy dokumentu. XML/Element je rozšířením typu List následujícím způsobem:
XML/Tag (8)Položky seznamu content mohou být následujících druhů:
XML/CData je textový řetězec, který nesmí obsahovat posloupnost znaků "]]>". Textová data jsou při překladu konvertována s využitím XML referencí.
Pokud je potřeba z nějakého důvodu rozlišovat prázdný element a neprázdný element bez obsahu, je možné použít následující blok.
XML/EmptyTag (9)Atributy tagu je možné vyjádřit jako seznam atributů XML/Attribute List (11) obsahující konkrétní atributy XML/Attribute (12) s následujícími hodnotami:
UBPointer AttributeNameSpojením uváděných skupin a bloků je zkušební specifikace formátu jako celku.
Následuje příklad konverze jednoduchého dokumentu do binárního tvaru.
Zdrojový XHTML dokument
Celková velikost: 317 bajtů
| Kód | Popis |
|---|---|
| FE 00 58 42 00 01 | Hlavička souboru |
| 07 80 C2 00 00 03 01 02 | Specifikační tag |
| 0A 00 00 08 05 63 00 00 00 00 01 | Odkaz na specifikaci formátu do katalogu (ukázkový) |
| 06 80 B0 01 00 01 02 | XML/Document: Kořenový tag XML Dokumentu |
| 05 7A 01 01 01 02 | XML/Prolog |
| 06 05 01 02 01 00 01 | XML/Declaration |
| 04 00 02 01 00 | Text/Encoding: hodnota kodovani |
| 06 67 03 01 01 02 03 | SGML/DocType |
| 01 04[68 74 6D 6C] | Data: html |
| 01 26[2D 2F 2F 57 33 43 2F 2F 44 54 44 20 58 48 54 4D 4C 20 31 2E 30 20 54 72 61 6E 73 69 74 69 6F 6E 61 6C 2F 2F 45 4E] | Data: "-//W3C//DTD XHTML 1.0 Transitional//EN" |
| 01 37[68 74 74 70 3A 2F 2F 77 77 77 2E 77 33 2E 6F 72 67 2F 54 52 2F 78 68 74 6D 6C 31 2F 44 54 44 2F 78 68 74 6D 6C 31 2D 74 72 61 6E 73 69 74 69 6F 6E 61 6C 2E 64 74 64] | Data: "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" |
| 08 80 27 01 08 01 02 02 03 | XML/Tag: Kořenový tag |
| 01 04[68 74 6D 6C] | Data: "html" |
| 05 4F 01 0B 03 01 | XML/Attribute List |
| 05 25 01 0C 01 02 | XML/Attribute |
| 01 05[78 6D 6C 6E 73] | Data: "xmlns" |
| 01 1C[68 74 74 70 3A 2F 2F 77 77 77 2E 77 33 2E 6F 72 67 2F 31 39 39 39 2F 78 68 74 6D 6C] | Data: "http://www.w3.org/1999/xhtml" |
| 05 0E 01 0C 01 02 | XML/Attribute |
| 01 08[78 6D 6C 3A 6C 61 6E 67] | Data: "xml:lang" |
| 01 02[65 6E] | Data: "en" |
| 05 0A 01 0C 01 02 | XML/Attribute |
| 01 04[6C 61 6E 67] | Data: "lang" |
| 01 02[65 6E] | Data: "en" |
| 07 17 01 08 01 00 01 02 | XML/Tag |
| 01 04[68 65 61 64] | Data: "head" |
| 07 09 01 08 01 00 01 02 | XML/Tag |
| 01 05[74 69 74 6C 65] | Data: "title" |
| 01 08[57 65 62 20 50 61 67 65] | Data: "Web Page" |
| 07 1C 01 08 01 00 01 02 | XML/Tag |
| 01 04[62 6F 64 79] | Data: "body" |
| 07 0E 01 08 01 00 01 02 | XML/Tag |
| 01 02[68 31] | Data: "h1" |
| 01 08[57 65 6C 63 6F 6D 65 21] | Data: "Welcome!" |
Celková velikost: 335 bajtů
Jednou z možných optimalizací je identifikace elementů pomocí identifikačních čísel místo textových položek.
Homepage: http://xbup.sf.net
License: GNU Free Documentation License (FDL)
Latest update: 2007-01-03