Autor: Mariusz ¯ebrowski.
Lokalizacja: http://www.antyspam.pl/w3c/REC-xinclude-20041220/
Dokument ten jest t³umaczeniem rekomendacji W3C XML Inclusions (XInclude) Version 1.0. Przek³ad ten nie jest przk³adem normatywnym
i mo¿e zawieraæ b³êdy wynikaj±ce z t³umaczenia. Status normatywny posiada
jedynie wersja angielskojêzyczna na stronie W3C http://www.w3.org/TR/2004/REC-xinclude-20041220/.
Dokument jest chroniony prawem autorskim. Copyright © 2004 W3C®
(MIT, ERCIM, Keio).
Prosimy odnie¶æ siê do erraty dla tego dokumentu, który mo¿e zawieraæ normatywne poprawki.
Patrz te¿ t³umaczenia.
Ten dokument jest tak¿e dostêpny w formatach nienormatywnych: XML.
Prawa autorskie © 2004 W3C® ( MIT, ERCIM , Keio), Wszystkie prawa zastrze¿one. Dotyczy przepisów W3C w zakresie odpowiedzialno¶ci, znaku towarowego, u¿ywania dokumentu
Ten dokument okre¶la tryb przetwarzania i sk³adniê dla ogólnych zadañ inkluzji. Do inkluzji dochodzi poprzez ³±czenie zbiorów informacji XML w jeden z³o¿ony zbiór informacji. Wykaz dokumentów XML (zbiory informacji) do ³±czenia i kontrola nad procesem ³±czenia jest wyra¿ona w sk³adni przyjaznej XML (elementy, atrybuty, odno¶niki URI).
Ta czê¶æ opisuje status tego dokumentu w czasie jego publikacji. Inne dokumenty mog± wyprzeæ ten dokument. Lista bie¿±cych publikacji W3C i najnowsza aktualizacja tego raportu technicznego jest dostêpna w indeksie raportów technicznych W3C na stronie http://www.w3.org/TR/.
Ten dokument to Rekomendacja W3C. Zosta³ omówiony przez Cz³onków W3C i inne zainteresowane strony, a tak¿e zosta³ zatwierdzony przez Dyrektora jako Rekomendacja W3C. Jest to sta³y dokument i mo¿e byæ u¿ywany jako wzorzec lub cytowany jako odno¶nik normatywny z innego dokumentu. Rola Rola W3C podczas tworzenia rekomendacji polega na zwróceniu uwagi na specyfikacjê oraz promocjê jego rozwoju. Zwiêksza to funkcjonalno¶æ i interoperacyjno¶æ sieci internetowej.
Ten dokument zosta³ stworzony przez G³ówn± Grupê Robocz± W3C XML jako czê¶æ dzia³ania XML. Angielska wersja tej specyfikacji jest jedyn± normatywn± wersj±. T³umaczenia tego dokumentu s± jednak dostêpne na stronie http://www.w3.org/2003/03/Translations/byTechnology?technology=xinclude10.
G³ówna Grupa Robocza XML uwa¿a, ¿e ta specyfikacja odnosi siê do spraw zwi±zanych z Rekomendacj± Ostatniego Wywo³ania oraz Kandydata (podczas omawiania Proponowanej Rekomendacji nie zg³aszano problemów). Znane implementacje s± zawarte w Raporcie Implementacji XInclude. Zestaw testów jest uwzglêdniony, aby pomóc w ocenie zgodno¶ci z t± specyfikacj±. Ten dokument zosta³ stworzony zgodnie z Procedurami Polityki Patentowej W3C z 24 stycznia 2002 CPP z pó¼niejszymi poprawkami. Ktokolwiek posiadaj±cy rzeczywist± wiedzê o patencie, która wed³ug niego zezwala na roszczenie sobie praw, powinien ujawniæ j± w zwi±zku z t± specyfikacj± i zgodnie z czê¶ci± 6 Polityki Patentowej W3C. Dokumentacjê stanowi±c± w³asno¶æ intelektualn± mo¿liwie zwi±zan± z t± specyfikacj± mo¿na znale¼æ na ogólnej stronie Grupy Roboczej o IPR .
Prosimy zg³aszaæ b³êdy w tym dokumencie do www-xml-xinclude-comments@w3.org; publiczne archiwa s± dostêpne. Spis erraty dla tej edycji jest dostêpny na http://www.w3.org/2004/12/xinclude-errata.
1 Wstêp
1.1 Powi±zanie z XLink
1.2 Powi±zanie z zewnêtrznymi obiektami XML
1.3 Powi±zanie DTD
1.4 Powi±zanie ze schematami XML
1.5 Powi±zanie z charakterystycznymi inkluzjami gramatycznymi
2 Terminologia
3 Sk³adnia
3.1 xi:zawiera element
3.2 xi:element rezerwy awaryjnej
4 Model przetwarzania
4.1
Zawarta lokalizacja
4.1.1
Powrót do poprzedniego stanu warto¶ci atrybutu href
4.1.2
U¿ycie XInclude z Ustaleniem Zawarto¶ci
4.2
Pozycje Zawarte kiedy analiza sk³adni="xml"
4.2.1
Informacje zawarte w dokumencie
4.2.2 Wêz³y wielokrotne
4.2.3 Obszar lokalizacji
4.2.4 Lokalizacje punktowe
4.2.5
Informacje o Elementach, Komentarzach i Instrukcjac Przetwarzania
4.2.6
Informacja o Atrybucie i Deklaracji Przestrzeni Nazw
4.2.7
Pêtle Inkluzyjne
4.3
Pozycje Zawarte kiedy analiza sk³adni="text"
4.4
Zachowanie Rezerwy Awaryjnej
4.5
Tworzenie wynikowego zbioru informacji
4.5.1
Niezanalizowane elementy rekordu
4.5.2 Zapisy
4.5.3 references Property Fixup
4.5.4 Fixup przestrzeni nazw
4.5.5 Podstawowy fixup URI
4.5.6 Fixup Jêzyka
4.5.7
W³±¶ciwo¶ci Zachowane przez Zbiór Informacji
5 Zgodno¶æ
5.1 Zgodno¶æ Znaczników
5.2 Zgodno¶æ Aplikacji
5.3 Zgodno¶æ Zbioru Informacji XML
A Odno¶niki
B Odno¶niki (Nienormatywne)
C Przyk³ady (Nienormatywne)
C.1 Przyk³ad Podstawowej Inkluzji
C.2 Przyk³ad Inkluzji Tekstowej
C.3 Inkluzja Tekstowa Przyk³±du XML
C.4 Fragment Przyk³adu Inkluzji
C.5 Przyk³ad Inkluzji Zakresu
C.6 Przyk³ad rezerwy awaryjnej
Wiele jêzyków programowania zapewnia mechanizm inkluzyjny w celu u³atwienia modularno¶ci. Czêsto tego typu jêzyki wymagaj± takich mechanizmów. Ta specyfikacja wprowadza mechanizm ogólny dla ³±czenia dokumentów XML (jak przedstawiono w informacjach) dla u¿ytku aplikacji wymagaj±cych takich u³atwieñ. Dzia³anie sk³adni istniej±cych konstrukcji XML - elementy, atrybuty, odno¶ciki URI.
XInclude ró¿ni siê od elementów ³±cz±cych opisanych w
[Jêzyk Po³±czeñ XML], szczególnie ³±czy z warto¶ci±
atrybutu show="embed"
. Takie po³±czenia zapewniaj±
sk³adniê niezale¿n± od media-type dla wskazania, ¿e ¼ród³o
jest wbudowane graficznie w obrêbie wy¶wietlanego dokumentu.
XLink nie wyszczególnia szczególnego modelu przetwarzania, ale po prostu
u³atwia wykrywanie linków i rozpoznanie przy³±czonych metadata przez aplikacjê wy¿szego poziomu.
XInclude, z drugiej strony, wyszczególnia szczególn± transformacjê media-type (XML na XML). Okre¶la to szczególny model przetwarzania dla ³±czenia zbiorów informacji. Przetwarzanie XInclude odbywa siê na niskim poziomie, czêsto poprzez procesor rodzajowy, który udostêpnia wynikowy zbiór informacj aplikacjom na wy¿szym poziomie.
Proste inkluzje elementów informacyjnych, jak opisano w tej specyfikacji, ró¿ni± siê od transkluzji, które zachowuj± kontekstowe informacje takie jak styl.
Jest wiele ró¿nic pomiêdzy zewnêtrznymi elementami XInclude i [XML 1.0] lub [XML 1.1], które sprawiaj±, ¿e s± one technologiami uzupe³niaj±cymi.
Przetwarzanie zewnêtrznych elementów (jak z reszt± of DTD) odbywa siê w czasie rozbioru. XInclude dzia³a na zbiory informacji, a wiêc jest ortogonalne do rozbioru.
Deklaracja zewnêtrznych elementów wymaga DTD lub wewnêtrznego podzbioru. Umieszcza to zbiór zale¿no¶ci na nkluzji, na przyk³ad sk³adnia dla deklaracji DOCTYPE wymaga, aby element dokumentu by³ nazwany - ortogonalnie do inkluzji w wielu przypadkach. Parsery waliduj±ce musz± mieæ zdefiniowany ca³kowity model zawarto¶ci. XInclude jest ortogonalny do walidacji i nazwy elementu dokumentu.
Elementy zewnêtrzne zapewniaj± poziom nieukierunkowania - element zewnêtrzny musi byæ zdeklarowany i nazwany, a tak¿e oddzielnie wywo³any. XInclude u¿ywa odno¶ników bezpo¶rednich. Aplikacje, które tworz± wynik XML przyrostowo mog± wyci±gaæ korzy¶ci z tego, ¿e nie maj± wcze¶niej zdeklarowanych inkluzji.
Niepowodzenie podczas ³adowania elementu zewnêtrznego jest zazwyczaj b³êdem krytycznym. XInclude pozwala autorowi na zapewnienie zawarto¶ci warto¶ci domy¶lnej, która bêdzie u¿ywana je¶li zdalne ¼ród³o nie mo¿e byæ za³adowane.
Sk³adnia dla wewnêtrznego podzbioru jest niewygodna dla wielu autorów prostych, dobrze stworzonych dokumentów XML. Sk³adnia XInclude opiera siê na pokrewnych konstrukcjach XML.
XInclude nie okre¶la zwi±zku z walidacj± DTD. XInclude opisuje transformacjê podzbiór-do-podzbioru, a nie zmianê w analizowanym zachowaniu XML. XInclude nie okre¶la mechanizmu dla walidacji DTD wynikowego zbioru informacji.
XInclude nie okre¶la zwi±zku z rozszerzonymi zbiorami informacji stworzonymi przez stosowanie schematu XML. Takie rozszerzone zbiory informacji mog± byæ dostarczane do wyj¶ciowego zbioru informacji, lub takie rozszerzenie mog³oby byæ stosowane do zbioru informacji wynikaj±cego z inkluzji.
Inkluzje szczególnego u¿ytku zosta³y wprowadzone do szczególnych gramatyk XML. XInclude zapewnia mechanizm rodzajowy dla rozpoznania i przetworzenia inkluzji, a tak¿e mo¿e zaoferowaæ prostsze oólne do¶wiadczenie auorskie, lepsze dzia³anie i mniejsz± nadmiarowo¶æ kodu.
[Definicja: S³owa kluczowe musi, nie wolno, wymagany, powinien, nie powinien, powinien, nie powinien, polecany, mo¿e, i opcjonalny bêd± zinterpretowane w tej specyfikacji jak opisano w [IETF RFC 2119].]
[Definicja: Termin zbiór informacji odnosi siê do wyniku procesora [XML 1.0] lub [XML 1.1] wyra¿one jako zbiór elementów informacji i w³asno¶ci, jak okre¶lono przez specyfikacjê [Zbiór Informacji XML].] W tym dokumencie termin zbiór informacji jest u¿yty jako synonim zbioru informacji.
[Definicja: Termin b³±d krytyczny odnosi siê do obecno¶ci czynników, które zapobiegaj± kontynuacji normalnego przetwarzania.] [Definicja: Termin b³±d ¼ród³a odnosi siê do niepowodzenia próby pobrania ¼ród³a z URL.] Procesory XInclude musz± zaprzestaæ przetwarzania, kiedy napotykane b³êdy inne ni¿ b³êdy ¼ród³a, które musz± byæ rozwi±zane jak opisano w 4.4 Zachowanie Rezerwy Awaryjnej.
XInclude okre¶la przestrzeñ nazw po³±czonych z URI
http://www.w3.org/2001/XInclude
.
Przestrzeñ nazw XInclude zawiera dwa
elementy z nazwami lokalnymi include
i
fallback
.
Dla pewno¶ci, w obrêbie tych specyfikacji
odnosi siê do tych elementów odpowiedno jako
xi:include
i
xi:fallback
.
Nastêpuj±ce (nienormatywne) schematy XML
[Schematy XML]
przedstawiaj± model zawarto¶ci przestrzeni nazw
xi
:
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xi="http://www.w3.org/2001/XInclude" targetNamespace="http://www.w3.org/2001/XInclude" finalDefault="extension"> <xs:element name="include" type="xi:includeType" /> <xs:complexType name="includeType" mixed="true"> <xs:choice minOccurs='0' maxOccurs='unbounded' > <xs:element ref='xi:fallback' /> <xs:any namespace='##other' processContents='lax' /> <xs:any namespace='##local' processContents='lax' /> </xs:choice> <xs:attribute name="href" use="optional" type="xs:anyURI"/> <xs:attribute name="parse" use="optional" default="xml" type="xi:parseType" /> <xs:attribute name="xpointer" use="optional" type="xs:string"/> <xs:attribute name="encoding" use="optional" type="xs:string"/> <xs:attribute name="accept" use="optional" type="xs:string"/> <xs:attribute name="accept-language" use="optional" type="xs:string"/> <xs:anyAttribute namespace="##other" processContents="lax"/> </xs:complexType> <xs:simpleType name="parseType"> <xs:restriction base="xs:token"> <xs:enumeration value="xml"/> <xs:enumeration value="text"/> </xs:restriction> </xs:simpleType> <xs:element name="fallback" type="xi:fallbackType" /> <xs:complexType name="fallbackType" mixed="true"> <xs:choice minOccurs="0" maxOccurs="unbounded"> <xs:element ref="xi:include"/> <xs:any namespace="##other" processContents="lax"/> <xs:any namespace="##local" processContents="lax"/> </xs:choice> <xs:anyAttribute namespace="##other" processContents="lax" /> </xs:complexType> </xs:schema>
Element xi:include
posiada nastêpuj±ce
atrybuty:
Warto¶æ, która po odpowiednim uwolnieniu
(patrz
4.1.1 Uwalnianie warto¶ci atrybutu href)
zosta³a wykonana, daje w wyniku odno¶nik URI lub
odno¶nik IRI,
okre¶laj±ce umieszczenie ¼ród³a do zawarcia.
Atrybut href
jest opcjonalny;
brak tego atrybutu jest taki sa, jak przy okre¶laniu
href=""
, tj., odno¶nik jest do tego samego dokumentu.
Je¶li brakuje atrybutu href
kiedy
parse="xml"
, atrybut xpointer
musi wyst±piæ. Identyfikatory fragmentowe
nie mog± byæ u¿yte;
ich obecno¶æ jest b³êdem krytycznym.
Warto¶æ, która jest wynikiem, jest syntaktycznie nie wa¿na dla
URI lub IRI,
powinna
byæ zg³oszona jako b³±d krytyczny, ale
niektóre implementacje mog± uwa¿aæ j± za niepraktyczn± do odró¿nienia tego
przypadku od b³êdu ¼ród³owego.
Uwaga:
URI koñcz±ce siê na #
jest uwa¿ane przez [IETF RFC 2396]
za maj±ce pusty identyfikator fragmentu. Takie URI powodowa³oby
b³±d krytyczny jak opisano powy¿ej.
Uwaga:
Kluczow± cech± XInclude jest to, ¿e zezwala, by ¼ród³o by³o uformowane
do typu user-specified dla inkluzji (XML lub tekst).
Otrzymany media type jest zatem zasadniczo ignorowany dla celów przetwarzania inkluzjii i sk³adnia identyfikatora
fragmentu otrzymanego media type nie bêdzie generalnie odpowiednia do typu user-specified.
Dla inkluzji parse="xml"
pod¼ród³a s± identyfikowane przez oddzielny atrybut
xpointer
,
który jest stosowany po formowaniu.
Kiedy to nie zapobiega identyfikacji pod¼róde³ dokumentów XML przez URI
(Patrz Struktura
World Wide Web [Identyfikacja]),
zapobiega ono u¿yciu tych identyfikatorów bezpo¶rednio w obrêbie XInclude.
Wskazuje, czy w³±czyæ ¼ród³o jako przeanalizowany XML czy jako tekst. Atrybut parse pozwala XInclude na danie autorowi w³±czanego dokumentu pierwszeñstwa na serwerze w³±czanego dokumentu co do tego, jak przetworzyæ za³±czon± zawarto¶æ. Warto¶æ "xml" wskazuje, ¿e ¼ród³o musi byæ przeanalizowane jako XML i zbiór informacji scalony. Warto¶æ "text" wskazuje, ¿e ¼ród³o musi byæ za³±czone jako znaki elementu informacji. Ten atrybut jest opcjonalny. Kiedy pominiêty, warto¶æ "xml" jest sugerowana (nawet przy braku warto¶ci domy¶lnej deklaracji). Warto¶ci inne ni¿ "xml" i "text" s± b³êdem krytycznym.
Uwaga:
Dla interoperacyjno¶ci pomiêdzy systemami waliduj±cymi i niewaliduj±cymi, odstêp nie powinien siê pojawiæ w atrybucie parse.
Kiedy parse="xml"
, XPointer (patrz [Struktura XPointer])
zawarta w atrybucie
xpointer
jest wyznaczona do identyfikacji czê¶æ ¼ród³a do za³±czenia. Ten atrybut jest opcjonalny;
kiedy jest pominiêty, ca³e ¼ród³o jest zawarte.
Atrybut
xpointer
nie mo¿e wyst±piæ kiedy
parse="text"
. Je¿eli atrybut xpointer
nie wystêpuje,
atrybut href
musi
wystêpowaæ.
Uwaga:
Poniewa¿ atrybut xpointer
nie jest odno¶nikiem URI,
%-uwolnienie nie mo¿e wyst±piæ w XPointer, ani nie ma potrzeby, aby procesor zastosowa³, lub zmieni³ takie uwolnienie.
Kiedy parse="text"
, czasami jest niemo¿liwe, by poprawnie wykryæ
kodowanie ¼ród³a tekstu. Atrybut
encoding
okre¶la jak ¼ród³o ma byæ t³umaczone
Warto¶ci± tego atrybutu jest EncName, jak opisano w specyfikacji XML, czê¶æ
4.3.3, zasada [81].
Atrybut encoding
nie ma wp³ywu kiedy
parse="xml"
.
Warto¶æ atrybutu accept
mo¿e byæ u¿ywane przez
procesor XInclude, aby wspomóc w ustalaniu zawarto¶ci.
Kiedy procesor XInclude pobiera ¼ród³o przez HTTP,
powinien umie¶ciæ
warto¶æ atrybutu accept
, je¶li taki istnieje, w
¿±daniu HTTP jako nag³ówek Accept
, jak
opisano w czê¶ci 14.1 [IETF RFC 2616]. Warto¶ci zawieraj±ce
znaki poza obszarem
#x20 do #x7E s± zabronione
w nag³ówkach HTTP, i musz±
byæ oflagowane jako b³êdy krytyczne.
Warto¶æ atrybutu accept-language
mo¿e byæ u¿yta przez procesor, aby wspomóc przy ustalaniu
zawarto¶ci. Kiedy procesor XInclude pobiera ¼ród³o przez HTTP,
powinien umie¶ciæ
warto¶æ atrybutu accept-language
je¶li taki istnieje, w
¿±daniu HTTP jako nag³ówek Accept-Language
, jak
opisano w czê¶ci 14.4 [IETF RFC 2616].
Warto¶ci zawieraj±ce znaki poza obszarem #x20 do #x7E s± zabronione
w nag³ówkach HTTP, i musz±
byæ oflagowane jako b³êdy krytyczne.
Atrybuty inne ni¿ te wymienione powy¿ej mog±
byæ umieszczone na elemencie xi:include
.
Nazwy atrybutów bez prefiksów s± zarezerwowane dla przysz³ych wersji tej specyfikacji
i musz±
byæ ignorowane przez
procesory XInclude 1.0.
W³asno¶æ potomna elementu
xi:include
mo¿e
zawieraæ pojedynczy element xi:fallback
; wyst±pienie wiêcej ni¿ jednego elementu
xi:fallback
, elementu
xi:include
, lub jakiegokolwiek innego elementu z przestrzeni nazw
XInclude jest b³êdem krytycznym.
Inna zawarto¶æ (tekst, instrukcje przetwarzania, komentarze, elementy poza przestrzeni± nazw,
nastêpcy elementów potomków) nie jest wymuszona przez tê specyfikacjê
i jest ignorowana przez procesor XInclude, tzn. nie ma wp³ywu na przetwarzanie za³±czania i nie wystêpuje we
w³asno¶ciach
potomnych wyniku zbioru warto¶ci.
Taka zawarto¶æ mo¿e byæ u¿yta przez aplikacje analizuj±ce przedinkluzjyjny zbiór informacji,
lub udostêpniona aplikacjom poinkluzyjnym poprzed ¶rodki inne ni¿ normalne w³asno¶ci zbioru informacji.
Nastêpuj±cy (nienormatywny) fragment DTD przedstawia próbkê
deklaracji dla elementu xi:include
:
<!ELEMENT xi:include (xi:fallback?)> <!ATTLIST xi:include xmlns:xi CDATA #FIXED "http://www.w3.org/2001/XInclude" href CDATA #IMPLIED parse (xml|text) "xml" xpointer CDATA #IMPLIED encoding CDATA #IMPLIED accept CDATA #IMPLIED accept-language CDATA #IMPLIED >
Element xi:fallback
pojawia siê jako potomek elementu
xi:include
.
Zapewnia mechanizm dla odzyskiwania zaginionych ¼róde³.
Kiedy wyst±pi
b³±d krytyczny,
element xi:include
jest wymieniany
wraz z zawarto¶ci± elementu xi:fallback
.
Je¿eli element xi:fallback
jest pusty, element
xi:include
jest usuniêty z wyniku.
Je¿eli brakuje elementu xi:fallback
,
b³±d ¼ród³a prowadzi do
in a b³êdu krytycznego.
Element xi:fallback
potomek elementu xi:include
. Jest to
b³±d krytyczny elementu xi:fallback
,
pojawiaj±cy siê w dokumencie w jakimkolwiek innym miejscu, ni¿ bezpo¶redni potomek
xi:include
(przed przetarzaniem inklucji na
zawarto¶ci elementu.) Jest to b³±d krytyczny
dla elementu xi:fallback
, zawieraj±cego jakiekolwiek elementy z przestrzeni nazw
XInclude inne ni¿ xi:include
.
Atrybuty
mog± byæ umieszczone na elemencie xi:fallback
.
Nazwy atrybutów bez prefiksów s± zarezerwowane dla przysz³ych wersji tej specyfikacji i
musz± byæ ignorowane przez procesory XInclude 1.0.
Nastêpuj±cy (nienormatywny) fragment DTD przedstawia próbkê deklaracji dla elementu
xi:fallback
:
<!ELEMENT xi:fallback ANY> <!ATTLIST xi:fallback xmlns:xi CDATA #FIXED "http://www.w3.org/2001/XInclude" >
Inkluzaj, jak opisano w tym dokumencie, jest szczególnym typem transformacji [Zbioru Informacji XML].
[Definicja:
Wej¶cie dla transformacji inkluzji sk³ada siê ze
zbioru informacji ¼ród³a.]
[
Definicja:
Wyj¶cie, nazywane
wynikowym zbiorem informacji
,
jest nowym zbiorem informacji, który scala ¼ród³owy zbiór informacji ze zbiorami informacji
¼róde³ identyfikowanych przez odno¶niki URL, lub odno¶niki URI wystêpuj±ce w elementach
xi:include
.]
W ten sposób przyjmuje siê mechanizm rozk³±daj±cy URI i IRI oraz identyfikuj±cy ¼ród³a jako zbiory informacji.
Dobrze ukszta³towane elementy rekordu XML, które nie posiadaj± zdefiniowanych zbiorów informacji
(np. zewnêtrzny element rekordu z wielokrotnymi elementami najwy¿szego poziomu) s± poza zasiêgiem tej specyfikacji,
zarówno dla u¿ycia jako
¼ród³owy zbiór informacji, jak i
wynikowy zbiór informacji.
Elementy xi:include
[
Definicja:
Elementy informacyjne umieszczone przy elemencie
xi:include
s± nazywane elementami zawartego najwy¿szego poziomu ].
[Definicja:
Elementy zawartego najwy¿szego poziomu
wraz z ich atrybutami, przestrzeniami nazw oraz potomkami
s± nazywane elementami zawartymi ].
Wynikowy zbiór informacji jest
zasadniczo kopi±
¼ród³owego zbioru informacji
, z ka¿dym elementemxi:include
i jego potomkami zast±pionymi przez odpowiednie
elementy zawarte.
Warto¶æ atrybutu href
po uwolnieniu
zgodnie z 4.1.1 Uwalnianie warto¶ci atrybutu href,
jest interpretowane zarówno jako
odno¶nik URI, lub odno¶nik IRI.
Podstawowy URI dla odpowiednich URI lub IRI jest podstawowym URI elementu
xi:include
, jak wyszczególniono w
[Podstawie XML].
[Definicja:
URI lub IRI wynikaj±ce z rozdzielania znormalizowanej warto¶ci atrybutu
href
(lub pusty ci±g znaków, je¶li nie pojawia siê ¿aden atrybut)
do zupe³nej formy URI lub IRI jest zwany zawart± lokalizacj±.]
Brak warto¶ci dla atrybutu href
, zarówno
przez pojawienie href=""
, lub braku atrybutu
href
, przedstawia przypadek, który mo¿e byæ niekompatybilny z pewnymi strategiami implementacji.
Na przyk³ad, procesor XInclude
mo¿e nie mieæ tekstowego odwzorowania
¼ród³owego zbioru informacji,
do w³±czenia jako parse="text"
,
lub mo¿e byæ niezdolny do dostêpu innej czê¶ci dokumentu przy u¿yciuparse="xml"
i xpointer, przez znaczenia strumieniowalno¶ci. Implementacja
mo¿e wybraæ jakikolwiek lub wszystkie braki warto¶ci
dla atrybutu href
takiego, jak
b³êdy ¼ród³owe.
Implementacje powinny dokumentowaæ
warunki, pod jakimi takie
b³êdy
¼ród³owe wystêpuj±.
href
Warto¶æ atrybutu href
jest przekszta³cona do zarówno odno¶nika URI, jak i odno¶nika IRI,
jako odpowiednia do implementacji.
Obecnie trwaj± prace nad stworzeniem RFC definiuj±cego Miêdzynarodowe Identyfikatory ¬ród³owe (IRI). Poniewa¿ te prace nie s± jeszcze zakoñczone, w tym dziale definiujemy odno¶niki IRI syntaktycznie. Oczekuje siê wydania errat zastêpuj±cych czê¶ci tego dzia³u z odno¶nikiem do RFC, kiedy bêdzie opublikowany. Dla dalszych ogólnych definicji i dyskusji na temat IRI patrz [Projekt IRI] (prace w trakcie).
[Definicja: Odno¶nik IRI jest ci±giem znaków, który mo¿e byæ przekszta³cony do odno¶nika URI poprzez uwolnienie nastêpuj±cych dodatkowych znaków:]
p³aszczyzna kodu ujednolicongo 0 znaków #xA0 - #xD7FF, #xF900-#xFDCF, #xFDF0-#xFFEF
p³aszczyzna kodu ujednolicongo 1-14 znaków #x10000-#x1FFFD ... #xE0000-#xEFFFD
Aby zmieniæ warto¶æ atrybutu href
do odno¶nika IRI, nastêpuj±ce znaki musz±
byæ uwolnione:
przestrzeñ #x20
Uwaga:
Autorzy zostali powiadomieni, aby unikaæ nieuwolnionych przestrzeni, poniewa¿ Schemat XML zidentyfikowa³ je jako ryzyko interoperacyjno¶ci.
ograniczniki < #x3C, > #x3E i " #x22
znak { #x7B, } #x7D, | #x7C, \ #x5C, ^ #x5E i ` #x60
Te znaki s± uwolnione w nastêpuj±cy sposób:
Ka¿dy dodatkowy znak jest przekszta³cony do UTF-8 [Unikod] jako jeden lub wiêcej bajtów.
Wynikowe bajty s± uwalniane z mechanizmem uwalniania URI (tj. przekszta³cone do %HH, gdzie HH jest zapisem szesnastkowym warto¶ci bajta).
Oryginalny znak jest zast±piony sekwencj± znaku wynikowego.
Aby przekszta³ciæ odno¶nik IRI do odno¶nika URI, dodatkowe znaki dopuszczone w IRI, musz± byæ uwolnione przy u¿yciu tej samej metody.
U¿ywanie mechanizmów takich, jak ustalanie zawarto¶ci HTTP [IETF RFC 2616] wprowadza dodatkowy poziom potencjalnej z³o¿ono¶ci w u¿yciu XInclude. Wykonawcy, którzy u¿ywaj± XInclude w sytuacjach, gdzie ustalanie zawarto¶ci jest prawdopodobne b±d¼ mo¿liwe, powinni byæ ¶wiadomi mo¿liwo¶ci, ¿e bêd± obejmowa³y zawarto¶æ, która mo¿e ró¿niæ siê strukturalnie od zawarto¶ci oczekiwanej, nawet je¶li ta zawarto¶æ to XML. Na przyk³ad, pojedynczy URI lub IRI mo¿e na ró¿ne sposoby oddawaæ nieprzerobione odwzorowanie ¼ród³a XML, odwzorowanie XSL-FO [XSL-FO], lub odwzorowania XHTML [XHTML], a tak¿e jako wszystkie wersje w ró¿nych kodowaniach znaków lub jêzykach.
Autorzy, których przetwarzanie XML zale¿y od odbioru szczególnego s³ownictwa XML,
powinni u¿ywaæ atrybuty
accept
oraz accept-language
, aby zwiêkszyæ mo¿liwo¶æ, ¿e ¼ród³o ma zapewniony oczekiwany format.
parse="xml"
Kiedy parse="xml"
,
zawarta lokalizacja (include location)
ma usuniêt± po¶rednio¶æ, ¼ród³o jest za³adowane, a zbiór informacji jest
stworzony poprzez analizê ¼ród³a tak, jakby typ media by³ aplikacj±/xml
(³±cznie z oznaczeniem znaku kodowania).
Uwaga:
W³a¶ciwo¶ci tego, jak zbiór informacji jest stworzony, s± celowo nieokre¶lone, aby pozwoliæ na elastyczno¶æ przez implementacje i, aby unikn±æ okre¶lania szczególnego modelu przetwarzania dla komponentów struktury XML. Dane szczegó³owe, na przyk³ad czy schemat walidacji DTD lub XML jest wykonany, nie s± objête w tej specyfikacji.
Uwaga:
Znaki kodowania ¼róde³ obejmowanych i zawartych mog± byæ ró¿ne. Nie wp³ywa to na wynikowy zbiór informacji, ale mo¿e wymagaæ rozpatrzenia podczas jakiejkolwiek pó¼niejszej serializacji.
¬ród³a, które s± z jakiegokolwiek powodu niedostêpne (na przyk³ad nie istnieje ¼ród³o, wystêpuj± problemy z ³±czno¶ci±, lub ograniczenia bezpieczeñstwa chroni± go przed za³adowaniem, schemat URI nie mo¿e byæ za³adowany, ¼ród³o ma nieobs³ugiwane kodowanie, lub ¼ród³o jest nie jest zdeterminowane jako XML przez specyficzne mechanizme implementacyjne) powoduj± b³±d ¼ród³a. ¬ród³a posiadaj±ce ¼le utworzony XML powoduj± b³±d krytyczny.
Uwaga:
Ró¿nica pomiêdzy b³êdem ¼ród³owym a b³êdem krytycznym jest w pewien sposób zale¿na od implementacji. Rozwa¿ zawart± lokalizacjê zwracaj±c± dokument HTML, mo¿liwe, ¿e jako b³±d strony. Jeden procesor móg³by okre¶liæ, ¿e nie mo¿e byæ stworzony ¿aden zbiór informacji ze ¼ród³a (np. poprzez sprawdzenie typu media) i spowodowaæ b³±d ¼ród³a, zezwalaj±c na zachowanie rezerwy awaryjnej. Inny procesor bez takiej heurystiki mo¿e próbowaæ zanalizowaæ ¼ród³o, które nie jest ¼ród³em XML jako XML i mo¿e napotkaæ b³±d krytyczny.
[Definicja:
elementy xi:include
w tym zbiorze informacji s± rekurencyjnie przetwarzane, aby stworzyæ
uzyskany zbiór informacji.
Dla odno¶nika intra-document
(przez atrybut xpointer
)
¼ród³owy zbiór informacji
jest u¿ywany jako uzyskany zbiór informacji.]
[Definicja:
Czê¶æ
uzyskanego zbioru informacji, który ma byæ
zawarty jest zwany
celem inkluzji (inclusion target).]
Element informacyjny dokumentu
uzyskanego zbioru informacji s³u¿y
jako cel inkluzji, chyba, ¿e wystêpuje
atrybut xpointer
i identyfikuje pod¼ród³o.
Atrybuty XPointer w formach opisanych w
[Planie XPointer]
i [Schemacie elementu XPointer] musz±
byæ obs³ugiwane.
Procesory XInclude opcjonalnie wspieraj± inne formy XPointer, takie jak te opisane w
[Schemacie XPointer xpointer()].
B³±d w XPointer jest b³êdem
¼ród³a.
[Schemat XPointer xpointer()] nie jest okre¶lony w kategoriach [Zbioru Informacji XML], ale w zamian bazuje na Modelu Danych [XPath 1.0], poniewa¿ Zbiór Informacji XML nie zosta³ jeszcze rozwiniêty. Odwzorowanie pomiêdzy lokalizacjami wêz³a XPath i elementami informacyjnymi jest bezpo¶rednie. Jednak¿e, xpointer() zak³ada, ¿e wszystkie elementy rekordu zosta³y rozszerzone. Zatem b³±d krytyczny ma za zadanie próbowaæ rozwi±zaæ schemat xpointer() w dokumencie, który zawiera nierozszerzon± informacjê odno¶nika elementu rekordu .
Zbiór zawartych elementów najwy¿szego poziomu jest uzyskiwany z uzyskanego zbioru informacji .
Celem inkluzji
mo¿e byæ dokument elementów informacyjnych
(na przyk³ad, nieokre¶lony atrybut xpointer
, lub
XPointer, szczególnie rozmieszczaj±cy podstawê dokumentu.) W tym przypadku,
zbiór zawartych elementów najwy¿szego poziomu
to potomek
elementu informacji dokumentu uzyskanego zbioru informacji
, z wyj±tkiem potomka
elementu informacji deklaracji typu dokumentu
, je¿eli taki istnieje.
Uwaga:
Specyfikacja Zbioru Informacji XML nie zapewnia zachowania odstêpu poza elementem dokumentu. XInclude nie stawia dalszych warunków dla zachowania tych odstêpów
Cel inkluzji mo¿e zawieraæ wiêcej ni¿ jeden wêze³. W tym przypadku zbiór zawartych elementów najwy¿szego poziomu jest zbiorem informacji elementów z uzyskanego zbioru informacji odpowiadaj±cemu wêz³om, do których odnosi siê w XPointer, w kolejno¶ci, w jakiej pojawiaj± siê one w uzyskanym zbiorze informacji.
Cel inkluzji mo¿e byæ zbiorem lokalizacji, który przedstawia zakres lub zbiór zakresów.
Ka¿dy zakres odpowiada elementom zbioru informacji w uzyskanym zbiorze informacji. [Definicja: Element informacji ma byæ wybierany przez przedzia³, je¶li zdarzy siê po (w porz±dku dokumentu) punkcie pocz±tkowym zakresu i przed koñcowym punktem zakresu.] [Definicja: Element informacji ma byæ czê¶ciowo wybrany przez zakres, je¿eli zawiera jedynie punkt pocz±tkowy zakresu, lub tylko koñcowy punkt zakresu.] Wed³ug definicji, element informacji znaku nie mo¿e byæ czê¶ciowo wybrany.
Zbiór zawartych elementów górnego poziomu to z³±cze, w kolejno¶ci dokumentu z usuniêtymi duplikatami, z elementami informacji, zarówno wybranymi lub czê¶ciowo wybranymi przez zakres. W³asno¶ci potomków wybranych elementów informacji nie s± zmodyfikowane. W³asno¶æ potomków czê¶ciowo wybranych elementów informacji to zbiór elementów informacji, które s± kolejno wybrane lub czê¶ciowo wybrane, itd.
cel inkluzji mo¿e byæ zbiorem lokalizacji, który reprezentuje punkt. W tym przypadku zbiór zawartych elementów jest pusty.
Cel inkluzji element informacji, element infomacji komentarza, lub instrukcja przetwarzania elementu informacji . W tym przypadku zbiór elementów zawartych w najwy¿szym poziomie sk³ada siê z elementu informacji odpowiadaj±cego elementowi, komentarzowi, lub wêz³owi instrukcji przetwarzania wnabytym zbiorze informacji.
Jest to b³±d krytyczny dla celu inkluzji, by byæ wêz³em atrybutu lub wêz³em przestrzeni nazw.
Podczas przetwarzania elementu xi:include
b³êdem krytycznym jest przetwarzanie innego
elementu xi:include
z
zawart± lokalizacj± i warto¶ci± atrybutu
xpointer
, który ju¿ zosta³ przetworzony w ³añcuchu inkluzyjnym.
Innymi s³owy, nastêpuj±ce s± wszystkie zgodne z prawem:
Element xi:include
mo¿e
odwo³ywaæ siê do elementu zawartego, kiedy
parse="text"
.
Element xi:include
mo¿e zidentyfikowaæ ró¿ne czê¶ci tego samego lokalnego ¼ród³a (to samo href
,
inny xpointer
).
Dwa nie zagnie¿d¿one elementy xi:include
identyfikowaæ ¼ród³o, które samo zawiera element mog±
xi:include
element.
Nastêpuj±ce nie s± zgodne z prawem:
Element xi:include
wskazuj±cy na siebie lub jakikolwiek przodek, kiedy
parse="xml"
.
Element xi:include
wskazuj±cy na jakikolwiek z zawartych elementów lub przodek, który zosta³ przetworzony na wy¿szym poziomie.
parse="text"
Kiedy parse="text"
, zawarta lokalizacja
jest usuniêta i ¼ród³o jest pobrana i przetworzona do zbioru znaków elementów informacji.
Ta cecha u³atwia inkluzje dzia³ania przyk³adów XML, zarówno jak i innych formatów opartych na tek¶cie.
¬ród³a, które s± niedostêpne z jakiegokolwiek innego powodu (np. ¼ród³o nie istnieje, utrudnienia w ³±czno¶ci lub wymogi bezpieczeñstwa chroni± go przed pobraniem go, schemat URI nie jest pobieralny, lub ¼ród³o jest kodowaniem niewspomaganym), powoduj± b³±d ¼ród³a.
Kodowanie takiego ¼ród³a jest jest okre¶lone przez:
zewnetrzn± informacjê koduj±c±, je¶li jest dostêpna, w przeciwnym wypadku
je¿eli typ media ¼ród³a to text/xml
,
aplikacja/xml
,
lub odpowiada konwencjom
text/*+xml
lub aplikacja/*+xml
jak opisano
w Typach Media XML [IETF RFC 3023],
kodowanie jest rozpoznawane tak, jak opisano w XML,
w przeciwnym wypadku
warto¶æ atrybutuencoding
je¶li taki istnieje
to
UTF-8.
Sekwencja bajtów poza obszarem dozwolonym przez kodowanie to b³±d krytyczny. Znaki niedozwolone w dokumantach XML to równie¿ b³±d krytyczny.
Ka¿dy znak uzyskany z transformacji ¼ród³a jest przedstawiony w elementach zawartych najwy¿szego poziomu jako element informacji znaku ze zbiorem kodów znaku do kodów znaków w kodowaniu ISO 10646, oraz zbiorem odstêpów zawarto¶ci elementu , do b³êdnych.
[Model Znaków] omawia normalizacjê zawartego tekstu.
Procesory XInclude musz± wykonaæ zachowanie rezerwy awaryjnej w przypadku b³êdu ¼ród³a, w nastêpuj±cy sposób:
Je¿eli potomkowie elementu informacyjnego
xi:include
w
¼ród³owym zbiorze informacji zawieraj±
dok³adnie jeden element xi:fallback
,
zawarte elementy najwy¿szego poziomu
sk³adaj± siê z elementów informacyjnych odpowiadaj±cych wynikowi wykonania przetwarzania
XInclude na potomkach
elementu xi:fallback
. Jest to
b³±d krytyczny
je¶li jest zero lub wiêcej ni¿ jeden
element xi:fallback
.
Uwaga:
Zawarto¶æ rezerwy awaryjnej nie jest zale¿na od warto¶ci atrybutu
parse
. Element xi:fallback
mo¿e zawieraæ znaczniki nawet kiedy
parse="text"
.
Podobnie, mo¿e zawieraæ prosty ci±g znaków kiedy
parse="xml"
.
Wynikowy zbiór informacji jest kopi± ¼ród³owego zbioru informacji,
z ka¿dym elementem
xi:include
przetworzonym nastêpuj±co:
Element informacyjny dla elementu
xi:include
jest znaleziony.
[Definicja:
W³asno¶æ parent (przodek)
tego elementu odnosi siê do elementu informacyjnego zwanego
include parent.]
W³asno¶æ children (potomek) elementu
include parent
jest zmodyfikowana przez zast±pienie elementu informacyjnego
xi:include
przez
zawartymi elementami najwy¿szego poziomu . W³asno¶ci± parent
ka¿dego zawartego elementu jest ustawienie
include parent.
B³êdem krytycznym jest próba zast±pienia elementu
xi:include
pojawiaj±cego siê jako element dokumentu (najwy¿szy poziom) w ¼ród³owym zbiorze informacji
z czym¶ innym, ni¿ lista zero lub wiêcej komentarzy,
zero lub wiêcej instrukcji przetwarzania, oraz jeden element.
Niektóre procesory mog± nie byæ w stanie przedstawiæ w³asno¶ci elementu przestrzeni± nazw in-scope je¿eli nie zawiera ona wi±zañ dla wszystkich prefiksów ograniczonych przez ich przodków przestrzenie nazw in-scope. Takie procesory mog± zatem zawieraæ dodatkowe wi±zania przestrzeni nazw odziedziczone po include parent w przestrzeniach nazw in-scope zawartych elementów.
Historia inkluzji takiego
zawartego elementu najwy¿szego poziomu
jest zarejestrowana we w³asno¶ci rozszerzenia
zawarta historia (include history). W³asno¶æ
zawarta historia to lista elementów informacyjnych,
przedstawiaj±cych elementy xi:include
dla rekursywnych poziomów
inkluzji. Je¿eli w³asno¶æ zawarta historia
ju¿ pojawia siê na
zawartym elemencie najwy¿szego poziomu, to element informacyjny xi:include
jest przy³±czony do listy.
Je¶li nie istnieje ¿adna w³asno¶æ
zawartej
historii, to w³asno¶æ jest dodawana z pojedyncz± warto¶ci± elementu informacyjnego
xi:include
.
Wszystkie zawarte elementy bêd± pojawiaæ siê w wynikowym zbiorze informacji. Zawiera to nierozszerzone informacyjne elementy rekordu je¿eli s± obecne.
Odno¶niki wewn±trz dokumentu w obrêbie elementów
xi:include
s± rozwi±zane na ¼ród³owym zbiorze informacji.
Efektem tego jest, ¿e porz±dek, w jakim elementy
xi:include
s± przetwarzane, nie wp³ywa na wynik.
W nastêpuj±cym przyk³±dzie, drugie w³±czenie zawsze wskazuje na pierwszy element
xi:include
, a nie na siebie, niezale¿nie od porz±dku, w jakim
w³±czenia s± przetwarzane.
W ten sposób wynikiem tej inkluzji s± dwie kopie
something.xml
(co¶.xml),
i nie powstaje inkluzyjny b³±d pêtli.
<x xmlns:xi="http://www.w3.org/2001/XInclude"> <xi:include href="something.xml"/> <xi:include xpointer="xmlns(xi=http://www.w3.org/2001/XInclude)xpointer(x/xi:include[1])" parse="xml"/> </x>
Jakikolwiek element informacyjny niezanalizowanego elementu rekordu pojawiaj±cy siê we w³asno¶ci atrybutu odno¶niki zawartych elementów lub jakikolwiek potomek jest dodany do w³asno¶ci niezanalizowanych elementów rekordu wynikowego zbioru informacji elementu informacyjnego dokumentu, je¿eli nie jest duplikatem istniej±cego cz³onka. Duplikaty nie pojawiaj± siê w wynikowym zbiorze informacji.
Niezanalizowane elementy rekordu z t± sam± nazw±, identyfikatorami systemowymi, publicznymi identyfikatorami, deklaracj± podstawowego URI, nazw± zapisu, oraz zapisem s± uwa¿ane za duplikaty. Aplikacja mo¿e równie¿ byæ w stanie wykryæ w inny sposób, ¿e niezanalizowane elementy rekordu s± duplikatem. Na przyk³ad URI wynikaj±cy z po³±czenia identyfikatora systemowego i deklaraji podstawowego URI s± tym samym.
B³êdem krytycznym jest w³±czenie elementów niezanalizowanego elementu rekordu z tak± sam± nazw±, ale które nie s± przeznaczone jako duplikaty.
Jakikolwiek element informacyjny zapisu pojawiaj±cy siê we w³asno¶ci odno¶nik atrybutu w zawatych elementach, lub jakimkolwiek potomku dodanym do w³asno¶ci zapisów wynikowego zbioru informacji elementu informacyjnego dokumentu, je¶li nie jest duplikatem istniej±cego cz³onka. Podobnie, jakikolwiek zapis, do którego odnosi siê niezanalizowany element rekordu dodany, jak opisano w 4.5.1 Niezanalizowane elementy rekordu, jest dodany, je¿eli nie jest duplikatem. Duplikaty nie pojawiaj± siê w wynikowym zbiorze informacji.
Elementy zapisów z t± sam± nazw±, identyfikatorem systemowym, identyfikatorem publicznym, oraz deklaracj± podstawowego URI s± uwa¿ane za duplikaty. Aplikacja mo¿e równie¿ byæ w stanie wykryæ w inny sposób, ¿e zapisy s± duplikatem.Na przyk³ad URI wynikaj±cy z po³±czenia identyfikatora systemowego i deklaraji podstawowego URI s± tym samym.
B³êdem krytycznym jest w³±czenie elementów zapisów ztak± sam± nazw±, ale które nie s± przeznaczone jako duplikaty.
Podczas inkluzji, przedmiot informacji atrybutu, którego w³asno¶ci± typu atrybutu jest IDREF lub IDREFS, posiada w³asno¶æ odno¶niki z zero lub wiêcej warto¶ci elementów z zbiorów informacji ¼ród³owych lub zawartych. Te warto¶ci musz± byæ dostosowane, aby odpowiada³y warto¶ciom elementów wystêpuj±cych w wynikowym zbiorze informacji. W trakcie tego procesu XInclude równie¿ poprawia niezgodno¶ci pomiêdzy w³asno¶ci± odno¶niki i typ atrybutu, które mog± powstaæ w nastêpuj±cych okoliczno¶ciach:
Fragment dokumentu zawiera IDREF wskazuj±cy na element w zawartym dokumencie, ale poza za³±czan± czê¶ci±. W takim przypadku nie ma elementu w wynikowym zbiorze informacji, który odpowiada warto¶ci elementu w oryginalnej w³asno¶ci odno¶nika.
Dokument, lub fragment dokumentu nie za³±cza siê sam. To znaczy, ¿e zawiera IDREF, które nie odnosz± siê do elementu w obrêbie tamtego dokumentu, b±d¼ fragmentu dokumentu, z zamierzeniem, ¿e te odno¶niki bêd± zrealizowane po inkluzji. W tym przypadku warto¶æ w³asno¶ci odno¶niki (references) jest nieznana, lub nie ma warto¶ci.
Wynikowy zbiór informacji zawiera konflikty ID - tj. wiêcej ni¿ jeden atrybut z ID typu atrybutu z t± sam± znormalizowan± warto¶ci±. W takim przypadku atrybuty o typie atrybutu IDREF lub IDREFS z t± sam± znormalizowan± warto¶ci± mog± mieæ ró¿ne warto¶ci dla swoich w³asno¶ci odno¶ników.
W rozwi±zywaniu tych niezgodno¶ci, XInclude bierze w³asno¶æ typu atrybutu za ostateczn±. W wynikowym zbiorze informacji warto¶æ w³asno¶ci odno¶niki przedmiotu atrybutu informacyjnego , którego w³asno¶ci typu atrybutu to IDREF lub IDREFS, dostosowane nastêpuj±co:
Dla ka¿dego znacznika we w³asno¶ci znormalizowanej warto¶ci w³asno¶æ odno¶niki zawiera przedmiot informacyjny typu element z tymi samymi w³asno¶ciami, co przedmiot informacyjny typu element w wynikowym zbiorze informacji z atrybutem z ID typu atrybutu i znormalizowan± warto¶ci± równ± znacznikowi. Porz±dek elementów we w³asno¶ci odno¶niki jest taki sam, co porz±dek znaczników pojawiaj±cych siê w znormalizowanej warto¶ci. Je¿eli dla jakichkolwiek z warto¶ci znacznika ¿aden element lub wiêcej ni¿ jeden element jest znaleziony, to w³asno¶æ odno¶niki nie ma warto¶ci.
W³asno¶æ przestrzeni nazw in-scope zapewnia, ¿e zakres przestrzeni nazw jest zachowana poprzez inkluzjê. Jednak, po inkluzji, w³asno¶æ atrybutów przestrzeni nazw mo¿e nie zapewniæ pe³nej listy deklaracji przestrzeni nazw koniecznych do interpretacji nazw okre¶laj±cych w zawarto¶ci atrybutu lub elementu w wyniku. Nie jest to zatem polecane, by procesory XInclude nie ods³ania³y atrybutów przestrzeni nazw w wyniku. Je¿eli jest to nieuniknione, implementacja mo¿e dodaæ przedmioty informacyjne typu atrybut do w³asno¶ci atrybutów przestrzeni nazw w porz±dku, aby przybli¿yæ informacjê przekazan± przez przestrzenie nazw in-scope .
Podstawowa w³asno¶æ URI uzyskanego zbioru informacji nie jest zmieniona jako wynik
³±czenia zbioru informacji i pozostaje niezmieniona po ³±czeniu.
Tak wiêc wzglêdne odno¶niki URI w za³±czonym zbiorze informacji rozk³adaj± siê do takiego samego
URI pomimo za³±czania do dokumentu z potencjonalnie ró¿nymi podstawowymi URI w efekcie.
Atrybuty xml:base
s± dodane do
wynikowego zbioru informacji dla wskazania tego faktu.
Ka¿dy przedmiot informacyjny typu element w zawartych przedmiotach najwy¿szego poziomu , który ma inny podstawowy URI ni¿ jego zawarty przodek, ma przedmiot informacyjny typu atrybut dodany do jego w³asno¶ci atrybuty. Ten atrybut posiada nastêpuj±ce w³a¶ciwo¶ci:
nazwa przestrzeni nazw http://www.w3.org/XML/1998/namespace
.
nazwê lokaln±
podstawy
.
prefiks
xml
.
znormalizowan± warto¶æ równ± zarówno do podstawowego URI elementu, lub równowa¿nemu odno¶nikowi URI wzglêdnego do podstawowego URI zawartego przodka. Okoliczno¶ci, w których jest po¿±dany wzglêdny URI i jak obliczyæ taki wzglêdny URI, s± zale¿ne od implementacji.
Okre¶lony znacznik stanu wskazuj±cy, ¿e ten atrybut by³ faktycznie okre¶lony w pocz±tkowym znaczniku jego elementu.
Typ atrybutu
CDATA
.
W³asno¶æ odno¶niki bez warto¶ci.
Element owner (w³a¶ciciel) przedmiotu informacyjnego elementu.
Je¿eli
przedmiot informacyjny typu atrybut
xml:base
ju¿ jest obecny, jest zast±piony przez nowy atrybut.
Kiedy atrybut
xml:lang
jest opisany jako odziedziczony przez XML,
Zbiór informacyjny XML nie daje pewno¶ci, ¿e bêdzie zachowane dziedziczenie tej w³asno¶ci przez
poprzez uk³ad dokumentu taki, jaki jest zapewniony przez XInclude
Ta czê¶æ wprowadza w³asno¶æ
jêzyk, która zapisuje zakres informacji
xml:lang
, aby zachowaæ j± podczas inkluzji.
Procesor XInclude
powinien dowodziæ w³asno¶ci
the ¼ród³owy zbiór informacji
i
nabyty zbiór informacji
przez dodanie w³asno¶ci
jêzyk do ka¿dego
przedmiotu informacyjnego typu element.
Warto¶ci± w³asno¶ci jest
znormalizowana warto¶æ
atrybutu xml:lang
pojawiaj±cego siê na tamtym elemencie, je¿eli taki istnieje,
z
xml:lang=""
wynikaj±cego w ¿adnej warto¶ci, w przeciwnym razie jest to warto¶æ w³asno¶ci
jêzyk
elementu przodka elementu je¿eli taki istnieje, w przeciwnym razie w³asno¶æ nie ma warto¶ci.
Ka¿dy przedmiot informacyjny typu element w zawartych przedmiotach najwy¿szego poziomu , który posiada inn± warto¶æ jêzyka, ni¿ jego zawarty przodek (rozwa¿aj±c niewra¿liwo¶æ przypadku przez [IETF RFC 3066]), lub, ¿e posiada warto¶æ je¶li jego zawarty przodek to przedmiot informacyjny typu dokument , posiada przedmiot informacyjny typu atrybut dodany do jego w³asno¶ci atrybuty . Ten atrybut posiada nastêpuj±ce w³asno¶ci:
nazwa przestrzeni nazw
http://www.w3.org/XML/1998/namespace
.
nazwa lokalna
lang
.
prefiks xml
.
znormalizowana warto¶æ równa w³asno¶ci jêzyk elementu. Je¿eli w³asno¶æ jêzyk nie ma warto¶ci, znormalizowana warto¶æ to pusty ci±g znaków.
okre¶lony znacznik stanu wskazuj±cy, ¿e ten atrybut by³ faktycznie okre¶lony w pocz±tkowym znaczniku jego elementu.
typ atrybutu
CDATA
.
w³asno¶æ odno¶niki bez warto¶ci.
element owner przedmiotu informacyjnego elementu.
Je¿eli przedmiot informacyjny typu atrybut xml:lang
jest ju¿ obecny, nie jest zast±piony przez nowy atrybut.
Uwaga:
Atrybut xml:space
nie jest traktowany specjalnie przez
XInclude.
Jako transformacja zbioru informacji, XInclude dzia³a na logicznej strukturze dokumentów XML, nie na ich serializacji tekstu. Wszystkie w³asno¶ci na przedmiocie informacyjnym opisanym w [Zbiorze Informacji XML] innym, ni¿ te szczególnie zmodyfikowane przez tê specyfikacje, s± zachowane podczas inkluzji. W³asno¶ci zawarta historia i jêzyk przedstawione w tej specyfikacji s± równie¿ zachowane. Rozszerzalne w³asno¶ci takie jak [Schematy XML] w³asno¶ci PSVI (poschematowy walidacyjny zbiór informacji) s± odrzucone przez warto¶æ domy¶ln±. Jednak procesor XInclude mo¿e, przy opcji u¿ytkownika, zachowaæ te w³asno¶ci w wynikowym zbiorze informacji, je¿eli s± poprawne w odniesieniu do specyfikacji opisuj±cej semantykê w³asno¶ci rozszerzenia.
Na przyk³ad w³asno¶æ w³asno¶ci PSVI opisuje warunki przodków i potomków. Modyfikacja przodków i potomków podczas procesu XInclude mo¿e niedok³adnie interpretowaæ warto¶æ tej w³asno¶ci, ale przez opcjê u¿ytkownika w³asno¶æ mog³aby byæ ponownie skalkulowana, aby uzyskaæ semantycznie dok³adn± warto¶æ. Poz zasiêgiem tej specyfikacji jest to, jak dok³adnie jest to dokonane.
przedmiot informacyjny typu element jest zgodny z t± specyfikacj± je¿eli spe³nia wymagania strukturalne dla zawartych elementów okre¶lonych w tej specyfikacji. Ta specyfikacja nie narzuca ¿adnych szczególnych ograniczeñ dla schematów DTD lub XML; zgodno¶æ ma zastosowanie wy³±cznie do elementów i atrybutów.
Zastosowanie jest zgodne z XInclude je¿eli:
wspiera [XML 1.0] i [Przestrzenie nazw w XML] lub [XML 1.1] i [Przestrzenie nazw w XML 1.1], [Zbiorze Informacji XML], [Podstawie XML], [Strukturze XPointer], oraz [Schemacie element() XPointer] ;
zaprzestaje przetwarzania kiedy napotyka na b³±d krytyczny;
przestrzega obowi±zkowych warunków, (musi) przed³o¿onych w tej specyfikacji i dla jakichkolwiek innych warunków (powinien i mo¿e), wybiera, aby przestrzegaæ, przestrzega ich w zalecany sposób; i
wykonuje sprawdzanie zgodno¶ci znaczników zgodnie ze wszystkimi ograniczeniami zgodno¶ci pojawiaj±cymi siê w tej specyfikacji.
Wsparcie dla [Schematu XPointer xpointer()] nie jest obowi±zkowa dla pe³nej zgodno¶ci XInclude. Radzi siê autorom, by u¿ywali xpointer() i innych schematów implementacji XPointer.
Ta specyfikacja jest zgodna ze [Zbiorem informacji XML]. Nastêpuj±ce przedmioty informacyjne musz± byæ obecne w wej¶ciowych zbiorach warto¶ci, aby umo¿liwiæ poprawne przetwarzanie:
przedmioty informacyjne typu dokument z w³asno¶ciami potomkowie i podstawowy URI.
Przedmioty informacyjne typu element z w³asno¶ciami nazwa przestrzeni nazw, nazwa lokaln±, potomkowie, atrybuty, podstawowy URI i przodek.
Przedmioty informacyjne typu atrybut z w³asno¶ciami nazwa przestrzeni nazw, nazwa lokalna i znormalizowana warto¶æ.
Dodatkowo przetwarzanie XInclude mo¿e generowaæ w wyniku nastêpuj±ce rodzaje przedmiotów informacyjnych:
przedmiot informacyjny typu znak z w³asno¶ciami kod znaku, odstêp zawarto¶ci elementu i przodek.
XInclude rozszerza zbiór informacji o w³asno¶æ zawarta historia, która w wyniku mo¿e pojawiæ siê na nastêpuj±cych typach przedmiotów informacyjnych:
przedmiot informacyjny typu element .
instrukcja przetwarzania przedmiotów informacyjnych.
przedmioty informacyjne typu komentarz.
przedmioty informacyjne typu znak.
XInclude równie¿ rozszerza zbiór informacji o w³asno¶æ jêzyk, która w wyniku mo¿e pojawiæ siê na przedmiotach informacyjnych typu element .
xi:include
, który wskazuje na dokument zewnêtrzny.
Zak³adaj±c, podstawowy URI tego dokumentu to
http://www.example.org/document.xml
.
<?xml version='1.0'?> <document xmlns:xi="http://www.w3.org/2001/XInclude"> <p>120 Mz is adequate for an average home user.</p> <xi:include href="disclaimer.xml"/> </document>
disclaimer.xml zawiera:
<?xml version='1.0'?> <disclaimer> <p> Opinie przedstawione tutaj przedstawiaj± te indywidualne i nie powinny byæ interpretowane jako oficjalna polityka poparta przez tê organizacjê. </p> </disclaimer>
Zbiór informacji wynikaj±cy z rozwi±zywanych inkluzji na tym dokumencie jest taka sama (z wyj±tkiem w³asno¶ci zawarta historia i jêzyk) jak ta z nastêpuj±cego dokumentu:
<?xml version='1.0'?> <document xmlns:xi="http://www.w3.org/2001/XInclude"> <p>120 Mz jest adekwatne dla przeciêtnego prywatnego u¿ytkownika. </p> <disclaimer xml:base="http://www.example.org/disclaimer.xml"> <p> Opinie przedstawione tutaj przedstawiaj± te indywidualne i nie powinny byæ interpretowane jako oficjalna polityka poparta przez tê organizacjê.</p> </disclaimer> </document>
Nastêpuj±cy dokument XML zawiera "przyk³±d roboczy" w dokumencie.
<?xml version='1.0'?> <document xmlns:xi="http://www.w3.org/2001/XInclude"> <p>This document has been accessed <xi:include href="count.txt" parse="text"/> times.</p> </document>
gdzie count.txt zawiera:
324387
Zbiór informacji wynikaj±cy z rozwi±zywanych inkluzji na tym dokumencie jest taka sama (z wyj±tkiem w³asno¶ci zawarta historia i jêzyk) jak ta z nastêpuj±cego dokumentu:
<?xml version='1.0'?> <document xmlns:xi="http://www.w3.org/2001/XInclude"> <p>Ten dokument zosta³ otwarty 324387 razy.</p> </document>
Nastêpuj±cy dokument XML zawiera "przyk³±d roboczy" w dokumencie.
<?xml version='1.0'?> <document xmlns:xi="http://www.w3.org/2001/XInclude"> <p>The following is the source of the "data.xml" resource:</p> <example><xi:include href="data.xml" parse="text"/></example> </document>
data.xml zawiera:
<?xml version='1.0'?> <data> <item><![CDATA[Brooks & Shields]]></item> </data>
Zbiór informacji wynikaj±cy z rozwi±zywanych inkluzji na tym dokumencie jest taka sama (z wyj±tkiem w³asno¶ci zawarta historia i jêzyk) jak ta z nastêpuj±cego dokumentu:
<?xml version='1.0'?> <document xmlns:xi="http://www.w3.org/2001/XInclude"> <p>The following is the source of the "data.xml" resource:</p> <example><?xml version='1.0'?> <data> <item><![CDATA[Brooks & Shields]]></item> </data></example> </document>
Nastêpuj±co przedstawiaj± siê wyniki za³±czanych fragmentów innego dokumentu XML.
Przyjmuj±c, ¿e podstawowy URI dokumentu to
http://www.example.com/JoeSmithQuote.xml
.
<?xml version='1.0'?> <price-quote xmlns:xi="http://www.w3.org/2001/XInclude"> <prepared-for>Joe Smith</prepared-for> <good-through>20040930</good-through> <xi:include href="price-list.xml" xpointer="w002-description"/> <volume>40</volume> <xi:include href="price-list.xml" xpointer="element(w002-prices/2)"/> </price-quote>
price-list.xml
odnosi siê do DTD, który deklaruje
atrybut id
jako typ ID
, i zawiera:
<?xml version='1.0'?> <!DOCTYPE price-list SYSTEM "price-list.dtd"> <price-list xml:lang="en-us"> <item id="w001"> <description id="w001-description"> <p>Normal Widget</p> </description> <prices id="w001-prices"> <price currency="USD" volume="1+">39.95</price> <price currency="USD" volume="10+">34.95</price> <price currency="USD" volume="100+">29.95</price> </prices> </item> <item id="w002"> <description id="w002-description"> <p>Super-sized widget with bells <i>and</i> whistles.</p> </description> <prices id="w002-prices"> <price currency="USD" volume="1+">59.95</price> <price currency="USD" volume="10+">54.95</price> <price currency="USD" volume="100+">49.95</price> </prices> </item> </price-list>
Zbiór informacji wynikaj±cy z rozwi±zywanych inkluzji na tym dokumencie jest taka sama (z wyj±tkiem w³asno¶ci zawarta historia i jêzyk) jak ta z nastêpuj±cego dokumentu:
<?xml version='1.0'?> <price-quote xmlns:xi="http://www.w3.org/2001/XInclude"> <prepared-for>Joe Smith</prepared-for> <good-through>20040930</good-through> <description id="w002-description" xml:lang="en-us" xml:base="http://www.example.com/price-list.xml"> <p>Super-sized widget with bells <i>and</i> whistles.</p> </description> <volume>40</volume> <price currency="USD" volume="10+" xml:lang="en-us" xml:base="http://www.example.com/price-list.xml">54.95</price> </price-quote>
Nastêpuj±co przedstawiaj± siê wyniki za³±czanego zakresu okre¶lonego przez XPointer.
Przyjmuj±c, ¿e podstawowy URI dokumentu to
http://www.example.com/document.xml
.
<?xml version='1.0'?> <document> <p>The relevant excerpt is:</p> <quotation> <include xmlns="http://www.w3.org/2001/XInclude" href="source.xml" xpointer="xpointer(string-range(chapter/p[1],'Sentence 2')/ range-to(string-range(/chapter/p[2]/i,'3.',1,2)))"/> </quotation> </document>
source.xml zawiera:
<chapter> <p>Sentence 1. Sentence 2.</p> <p><i>Sentence 3. Sentence 4.</i> Sentence 5.</p> </chapter>
Zbiór informacji wynikaj±cy z rozwi±zywanych inkluzji na tym dokumencie jest taka sama (z wyj±tkiem w³asno¶ci zawarta historia i jêzyk) jak ta z nastêpuj±cego dokumentu:
<?xml version='1.0'?> <document> <p>The relevant excerpt is:</p> <quotation> <p xml:base="http://www.example.com/source.xml">Sentence 2.</p> <p xml:base="http://www.example.com/source.xml"><i>Sentence 3.</i></p> </quotation> </document>
Nastêpuj±cy dokument XML polega na mechani¼mie rezerwy awaryjnej, aby powie¶æ siê w zdarzeniu, ¿eby
odno¶niki
example.txt
i fallback-example.txt
nie by³y dostêpne..
<?xml version='1.0'?> <div> <xi:include href="example.txt" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude"> <xi:fallback><xi:include href="fallback-example.txt" parse="text"> <xi:fallback><a href="mailto:bob@example.org">Report error</a></xi:fallback> </xi:include></xi:fallback> </xi:include> </div>
Je¿eli ani example.txt
ani fallback-example.txt
nie s± dostêpne, zbiór informacji wynikaj±cy z roz³±czania inkluzji na tym dokumencie jest taki
sam (z wyj±tkiem w³asno¶ci zawarta historia
i jêzyk)
jak ta z nastêpuj±cego dokumentu:
<?xml version='1.0'?> <div> <a href="mailto:bob@example.org">Report error</a> </div>