Ikona XML
1 gwiazdka2 gwiazdki3 gwiazdki4 gwiazdki5 gwiazdek (nikt jeszcze nie ocenił tego wpisu)
Loading...Loading...

xml:id: Dodatki

A. Literatura

IETF RFC 2119

RFC 2119: Key words for use in RFCs to Indicate Requirement Levels. Internet Engineering Task Force, 1997. (See http://www.ietf.org/rfc/rfc2119.txt.)

XML 1.0

Tim Bray, Jean Paoli, C.M. Sperberg-McQueen, et. al., editors. Extensible Markup Language (XML) 1.0 (Third Edition). World Wide Web Consortium, 2004. (See http://www.w3.org/TR/REC-xml/.)

XML 1.1

Tim Bray, Jean Paoli, C.M. Sperberg-McQueen, et. al., editors. Extensible Markup Language (XML) 1.1. World Wide Web Consortium, 2004. (See http://www.w3.org/TR/xml11/.)

XML Information Set

John Cowan and Richard Tobin, editors. XML Information Set (Second Edition). World Wide Web Consortium, 2004. (See http://www.w3.org/TR/xml-infoset/.)

Namespaces in XML

Tim Bray, Dave Hollander, and Andrew Layman, editors. Namespaces in XML. World Wide Web Consortium, 1999. (See http://www.w3.org/TR/REC-xml-names/.)

Namespaces in XML 1.1

Tim Bray, Dave Hollander, Andrew Layman, and Richard Tobin, editors. Namespaces in XML 1.1. World Wide Web Consortium, 2004. (See http://www.w3.org/TR/xml-names11/.)

B. Literatura (nienormatywny)

XML Schemas

Henry S. Thompson, David Beech, Murray Maloney, Noah Mendelsohn, editors. XML Schema Part 1: Structures. World Wide Web Consortium, 2001. (See http://www.w3.org/TR/xmlschema-1/.)

SOAP

Martin Gudgin, Marc Hadley, Noah Mendelsohn, et. al., editors. SOAP Version 1.2 Part 1: Messaging Framework. World Wide Web Consortium, 2003. (See http://www.w3.org/TR/soap12-part1/.)

C. Wpływ na formę kanoniczną dokumentu (nienormatywny)

Specyfikacja Canonical XML Version 1.0 opisuje proces, w którym atrybuty w przestrzeni nazw xml: zostają odziedziczone w sprowadzonym do formy kanonicznej dokumencie. Chociaż spodziewanym wynikiem tego procesu jest powstanie atrybutów xml:lang lub xml:space, przetwarzanie w ten sposób atrybutów xml:id niesie prawdopodobieństwo powstania dokumentów zawierających błędy xml:id, a w szczególności takich wartości atrybutu xml:id, które nie mają charakteru unikalnego.

Jest to najwidoczniej wada projektowania Canonical XML. W specyfikacji Exclusive XML Canonicalization Version 1.0 ta przypadłość nie występuje i przez to może być ona odpowiedniejsza dla dokumentów zawierających atrybuty ID.

D. Technologie walidacji (nienormatywny)

Niniejszy dodatek opisuje, jak przetwarzanie xml:id współdziała z wybranymi technologiami walidacji.

D.1. Walidacja za pomocą DTD

Autorom DTD zaleca się stosowanie atrybutów xml:id podczas nadawania identyfikatorów elementom zadeklarowanym w ich dokumentach.

Poniższy fragment DTD ilustruje przykładową deklarację atrybutu xml:id:

<!ATTLIST someElement
    xml:id     ID          #IMPLIED
>

Autorom DTD zaleca się deklarowanie atrybutów xml:id przy pomocy typu ID. Dokument, używający atrybutów xml:id, z zadeklarowanym typem innym niż ID zawsze będzie generował błędy xml:id.

Użytkownicy dokumentów, które podległy walidacji przy pomocy poprawnie zadeklarowanych atrybutów xml:id mogą rozpoznać atrybuty ID poprzez właściwość attribute type.

D.2. Walidacja za pomocą XML Schema

Autorom XML Schema zaleca się używanie atrybutów xml:id podczas nadawania identyfikatorów elementom zadeklarowanych w ich schematach. Proszę zauważyć, że najłatwiej to osiągnąć poprzez zaimportowanie schematu dla przestrzeni nazw XML i użycie deklaracji atrybutu, którą ona posiada.

Poniższy fragment XML Schema dla przestrzeni nazw XML ilustruje przykładową deklarację atrybutu xml:id:

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
           targetNamespace="http://www.w3.org/XML/1998/namespace">
    <xs:attribute name="id" type="xs:ID"/>
</xs:schema>

Autorom XML Schema zaleca się deklarowanie atrybutów xml:id przy pomocy typu xs:ID. Dokument, używający atrybutów xml:id, z zadeklarowanym typem innym niż xs:ID zawsze będzie generował błędy xml:id.

Użytkownicy dokumentów walidujących atrybuty xml:id według schematów właściwych dla przestrzeni nazw XML mogą rozpoznać atrybuty ID poprzez rodzinę właściwości PSVI type definition.

Aplikacje mogą rozpoznać atrybuty xml:id, jak i atrybuty ID, poprzez konceptualne używanie zgodnego w minimalnym stopniu ze schematami procesora i powyższego schematu.

Proszę zauważyć, że rezultaty przetwarzania powyższego schematu przez zgodny w minimalnym stopniu ze schematami procesor są zbliżone do zwykłego szukania atrybutów xml:id upewniając się, że wartość tych atrybutów ma poprawną formę leksykalną (NCName) i że te wartości mają w dokumencie charakter unikalny.

D.3. Walidacja za pomocą RELAX NG

Autorom RELAX NG zaleca się stosowanie atrybutów xml:id podczas nadawania identyfikatorów elementom zadeklarowanym w ich schematach.

Poniższy fragment RELAX NG ilustruje przykładową deklarację atrybutu xml:id:

<optional xmlns="http://relaxng.org/ns/structure/1.0"
              datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
  <attribute name="xml:id">
    <data type="ID"/>
  </attribute>
</optional>

Autorom gramatyki RELAX NG zaleca się deklarowanie atrybutów xml:id przy pomocy typu xs:ID. Dokument używający atrybutów xml:id z zadeklarowanym typem innym niż xs:ID zawsze będzie generował błędy xml:id.

E. Normalizacja wartości atrybutów ID (nienormatywny)

XML 1.0 wymaga, aby analizator syntaktyczny dokonał normalizacji wszystkich wartości atrybutu. Normalizacja poszerza odnośniki znaku, odnośniki jednostki i usuwa końcowe znaki wiersza. Atrybuty typu ID podlegają dodatkowym zasadom normalizacji: usunięcia odstępów na początku i końcu oraz zastąpienia sekwencji znaków spacji pojedynczym odstępem.

Procesor xml:id musi zagwarantować, że obydwa kroki normalizacji zostały wykonane na wszystkich atrybutach oznaczonych xml:id. W szczególności analizator syntaktyczny może nie wykonać dodatkowych kroków normalizacyjnych, wymaganych dla atrybutów typu ID, jeśli atrybut nie został zadeklarowany, lub został zadeklarowany jako ID.

Rozważmy poniższy dokument:

<!DOCTYPE doc [
<!ATTLIST doc xml:id ID #IMPLIED>
]>
<doc xml:id="  one
">
<para xml:id="  two
"></para>
</doc>

Początkową wartością atrybutu xml:id doc będzie „one”, ponieważ analizator syntaktyczny wiedział, że jest to atrybut ID. Początkową wartością para będzie ” two „, ponieważ analizator nie wiedział, że jest to atrybut ID i nie wykonał dodatkowych, wymaganych kroków normalizacyjnych.

Po wykonaniu przetwarzania xml:id, wartości atrybutów xml:id doc i para będą odpowiednio „one” i „two”. Te, prawidłowo znormalizowane, wartości będą przechowywane we właściwości normalized value standardu infoset. Wykonywanie przetwarzania xml:id zmienia infoset jeżeli znajdują się tam niekompletnie znormalizowane atrybuty xml:id.

Uwaga:
W celu zachowania interoperacyjności twórcy dokumentów powinni używać w pełni znormalizowanych wartości, które są oficjalnymi nazwami NCName w atrybutach xml:id.


Niniejszy dokument jest tłumaczeniem rekomendacji W3C xml:id Version 1.0. Tłumaczenie to nie ma statusu dokumentu normatywnego i może zawierać błędy wynikające z tłumaczenia. Tylko dokument znajdujący się na stronie W3C pod adresem http://www.w3.org/TR/2005/REC-xml-id-20050909/ ma charakter normatywny.

Copyright © 2004 W3C® (MIT, ERCIM, Keio), Wszystkie prawa zastrzeżone. W3C stosuje następujące zasady dotyczące odpowiedzialności cywilnej, znaku towarowego, używania dokumentu i licencji oprogramowania.

Dodaj komentarz