[XBUP]XBUP - Projekt XBUP-XML

Úvod

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

O úroveň výše

Obsah

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

1. Úvod

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.

1.1. Motivace

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.

1.2. Principy

Návrh předepisuje způsob, jakým reprezentovat jednotlivé textové položky XML se zachováním potřebné informace:

2. Kódování XML dat

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:

2.1. Hlavička dokumentu

Dokument začíná specifikačním blokem následovaným XML dokumentovým uzlem. Ten má následující položky:

XML/Document (0):

UBPointer PrologPointer
UBPointer ElementPointer
UBPointer MiscPointer

První z odkazů ukazuje na položku XML Prolog s následujícími atributy:

XML/Prolog (1):

UBPointer DeclarationPointer
UBPointer DocTypePointer
UBPointer MiscPointer
UBPointer MiscAfterDTPointer

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):

XBVersion XMLVersion
UBPointer EncodingPointer
UBPointer StandalonePointer

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)

UBPointer PITargetPointer
UBPointer PIStringPointer

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 "?>".

2.2. Tag dokumentu

Jsou dva základní elementy dokumentu. XML/Element je rozšířením typu List následujícím způsobem:

XML/Tag (8)

UBPointer TagName
UBPointer AttributeListPointer
UBList Content

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)

UBPointer AttributeName
UBPointer AttributesPointer

2.3. Atributy tagu

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 AttributeName
UBPointer AttributeValue

3. Související formáty

ML/DocType (1):

UBPointer NamePointer
UBPointer ExternalIDPointer
UBPointer InternalPointer

4. Výsledná specifikace formátu

Spojením uváděných skupin a bloků je zkušební specifikace formátu jako celku.

4.1. Příklad dokumentu

Následuje příklad konverze jednoduchého dokumentu do binárního tvaru.

Zdrojový XHTML dokument

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>Web Page</title>
</head>
<body>
<h1>Welcome!</h1>
</body></html>

Celková velikost: 317 bajtů

KódPopis
FE 00 58 42 00 01Hlavička souboru
07 80 C2 00 00 03 01 02Specifikační tag
0A 00 00 08 05 63 00 00 00 00 01Odkaz na specifikaci formátu do katalogu (ukázkový)
06 80 B0 01 00 01 02XML/Document: Kořenový tag XML Dokumentu
05 7A 01 01 01 02XML/Prolog
06 05 01 02 01 00 01XML/Declaration
04 00 02 01 00Text/Encoding: hodnota kodovani
06 67 03 01 01 02 03SGML/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 03XML/Tag: Kořenový tag
01 04[68 74 6D 6C]Data: "html"
05 4F 01 0B 03 01XML/Attribute List
05 25 01 0C 01 02XML/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 02XML/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 02XML/Attribute
01 04[6C 61 6E 67]Data: "lang"
01 02[65 6E]Data: "en"
07 17 01 08 01 00 01 02XML/Tag
01 04[68 65 61 64]Data: "head"
07 09 01 08 01 00 01 02XML/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 02XML/Tag
01 04[62 6F 64 79]Data: "body"
07 0E 01 08 01 00 01 02XML/Tag
01 02[68 31]Data: "h1"
01 08[57 65 6C 63 6F 6D 65 21]Data: "Welcome!"

Celková velikost: 335 bajtů

2.3. Elementy s indexovaným názvem

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