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>