Polskie tłumaczenie Rekomendacji "XML Inclusions (XInclude) Version 1.0"

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

W3C

Inkluzje XML (XInclude) Wersja 1.0

Rekomendacja W3C z 20 grudnia 2004

Obecna wersja:
http://www.w3.org/TR/2004/REC-xinclude-20041220/
Najnowsza wersja:
http://www.w3.org/TR/xinclude/
Poprzednia wersja:
http://www.w3.org/TR/2004/PR-xinclude-20040930/
Edytorzy:
Jonathan Marsh, Microsoft <jmarsh@microsoft.com>
David Orchard, BEA Systems <dorchard@bea.com>

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.


Streszczenie

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

Status dokumentu

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.

Spis treści

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

Dodatki

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


1 Wstęp

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.

1.1 Związek z XLink

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.

1.2 Związek z Zewnętrznymi Elementami Rekordu XML

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.

1.3 Związek z DTD

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.

1.4 Związek ze Schematami XML

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.

1.5 Związek z Inkluzjami o Szczególnej Gramatyce

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.

2 Terminologia

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

3 Składnia

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>

3.1 Element xi:include

Element xi:include posiada następujące atrybuty:

href

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.

parse

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.

xpointer

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

encoding

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

accept

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.

accept-language

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
>

3.2 Element xi:fallback

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

4 Model przetwarzania

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.

4.1 Zawarta lokalizacja

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

4.1.1 Uwalnianie wartości atrybutu 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:

  1. Każdy dodatkowy znak jest przekształcony do UTF-8 [Unikod] jako jeden lub więcej bajtów.

  2. Wynikowe bajty są uwalniane z mechanizmem uwalniania URI (tj. przekształcone do %HH, gdzie HH jest zapisem szesnastkowym wartości bajta).

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

4.1.2 Używanie XInclude z Ustaleniem Zawartości

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.

4.2 Elementy zawarte kiedy 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 .

4.2.1 Dokument Elementów Informacyjnych

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

4.2.2 Węzły wielokrotne

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.

4.2.3 Lokalizacje Zbioru Wartości

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.

4.2.4 Lokalizacje Punktu

cel inkluzji może być zbiorem lokalizacji, który reprezentuje punkt. W tym przypadku zbiór zawartych elementów jest pusty.

4.2.5 Element, Komentarz i Instrukcja Przetwarzania Elementów Informacji

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.

4.2.6 Atrybut i Deklaracja Przestrzeni NazwElementów Informacji

Jest to błąd krytyczny dla celu inkluzji, by być węzłem atrybutu lub węzłem przestrzeni nazw.

4.2.7 Pętle Inkluzyjne

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.

4.3 Elementy Zawarte kiedy 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.

4.4 Zachowanie rezerwy awaryjnej

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

4.5 Tworzenie wynikowego zbioru informacji

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>

4.5.1 Niezanalizowane elementy rekordu

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.

4.5.2 Zapisy

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.

4.5.3 odnośniki Property Fixup

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.

4.5.4 Fixup przestrzeni nazw

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 .

4.5.5 Podstawowy URI Fixup

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:

  1. nazwa przestrzeni nazw http://www.w3.org/XML/1998/namespace.

  2. nazwę lokalną podstawy.

  3. prefiks xml.

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

  5. Określony znacznik stanu wskazujący, że ten atrybut był faktycznie określony w początkowym znaczniku jego elementu.

  6. Typ atrybutu CDATA.

  7. Własność odnośniki bez wartości.

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

4.5.6 Język Fixup

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:

  1. nazwa przestrzeni nazw http://www.w3.org/XML/1998/namespace.

  2. nazwa lokalna lang.

  3. prefiks xml.

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

  5. określony znacznik stanu wskazujący, że ten atrybut był faktycznie określony w początkowym znaczniku jego elementu.

  6. typ atrybutu CDATA.

  7. własność odnośniki bez wartości.

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

4.5.7 Własności zachowane przez zbiór informacji

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.

5 Zgodność

5.1 Zgodność znaczników

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.

5.2 Zgodność zastosowania

Zastosowanie jest zgodne z XInclude jeżeli:

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.

5.3 Zgodność zbioru informacji XML

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 .

A Odnośniki

IETF RFC 2119
RFC 2119: Słowa kluczowe dla użycia RFC do wskazania Poziomów Wymagań . Internet Engineering Task Force, 1997. (Patrz http://www.ietf.org/rfc/rfc2119.txt.)
IETF RFC 2279
RFC 2279: UTF-8, format transformacji ISO 10646. Internet Engineering Task Force, 1998. (Patrz http://www.ietf.org/rfc/rfc2279.txt.)
IETF RFC 2396
RFC 2396: Jednolite Identyfikacji Źródła . Inżynieria Internetowa Task Force, 1995. (Patrz http://www.ietf.org/rfc/rfc2396.txt.)
IETF RFC 2732
RFC 2732: Format dla Dosłownych Adresów IPv6 w URL . Internet Engineering Task Force, 1999. (Patrz http://www.ietf.org/rfc/rfc2732.txt.)
IETF RFC 3023
RFC 3023: Typy Media XML . Internet Engineering Task Force, 2001. (Patrz http://www.ietf.org/rfc/rfc3023.txt.)
Unikod
The Unicode Consortium. Standard Unikod, Wersja 4.0. Reading, Mass.: Addison-Wesley, 2003, aktualizowany od czasu do czasu przez publikacje nowych wersji. (Patrz http://www.unicode.org/unicode/standard/versions/ w celu sprawdzenia najnowszych wersji i dodatkowych informacji wersji standardów i Bazy Danych Znaków Unikod).
XML 1.0
Tim Bray, Jean Paoli, C.M. Sperberg-McQueen, Eve Maler, François Yergeau, editors. Rozszerzalne Znaczniki Język (XML) 1.0 (Wydanie Trzecie), World Wide Web Consortium, 2004. (Patrz http://www.w3.org/TR/2004/REC-xml-20040204/.)
XML 1.1
Tim Bray, Jean Paoli, C.M. Sperberg-McQueen, Eve Maler, François Yergeau, John Cowan, edztoryz. Rozszerzalny Język Znaczników (XML) 1.1, World Wide Web Consortium, 2004. (Patrz http://www.w3.org/TR/2004/REC-xml11-20040204/.)
Podstawa XML
Jonathan Marsh, edytor. Podstawa XML . World Wide Web Consortium, 2001. (Patrz http://www.w3.org/TR/2001/REC-xmlbase-20010627/.)
Zbiór Informacji XML
John Cowan i Richard Tobin, edytorzy. Zbiór Informacji XML (Wydanie Drugie). World Wide Web Consortium, 2004. (Patrz http://www.w3.org/TR/2004/REC-xml-infoset-20040204/.)
Przestrzenie nazw w XML
Tim Bray, Dave Hollander i Andrew Layman, edytorzy. Przestrzenie nazw w XML. World Wide Web Consortium, 1999. (Patrz http://www.w3.org/TR/1999/REC-xml-names-19990114/.)
Przestrzenie nazw w XML 1.1
Tim Bray, Dave Hollander, Andrew Layman, Richard Tobin, edytorzy. Przestrzenie nazw w XML 1.1. World Wide Web Consortium, 2004. (Patrz http://www.w3.org/TR/2004/REC-xml-names11-20040204/.)
XPointer Framework
Paul Grosso, Eve Maler, Jonathan Marsh, Norman Walsh, editors. XPointer Framework. World Wide Web Consortium, 2003. (See http://www.w3.org/TR/2003/REC-xptr-framework-20030325/.)
XPointer element() scheme
Paul Grosso, Eve Maler, Jonathan Marsh, Norman Walsh, editors. XPointer element() Scheme. World Wide Web Consortium, 2003. (Patrz http://www.w3.org/TR/2003/REC-xptr-element-20030325/.)

B Odnośniki (Nienormatywne)

IETF RFC 2616
RFC 2616: Hypertext Transfer Protocol -- HTTP/1.1. Internet Engineering Task Force, 1999. (Patrz http://www.ietf.org/rfc/rfc2616.txt.)
IETF RFC 3066
RFC 3066: Znaczniki dla identyfikacji Języka. Internet Engineering Task Force, 2001. (Patrz http://www.ietf.org/rfc/rfc3066.txt.)
XML Inclusion Proposal
Jonathan Marsh, David Orchard, edytorzy. XML Inclusion Proposal (XInclude). World Wide Web Consortium, 2004. (Patrz http://www.w3.org/TR/1999/NOTE-xinclude-19991123.)
XML Linking Language
Steve DeRose, Eve Maler, David Orchard i Ben Trafford, editors. Język Łączący XMLe (XLink). World Wide Web Consortium, 2001. (Patrz http://www.w3.org/TR/2001/REC-xlink-20010627/.)
Schemat XPointer xpointer()
Steve DeRose, Ron Daniel, Eve Maler, edytorzy. Schemat XPointer xpointer() . World Wide Web Consortium, 2002. (Patrz http://www.w3.org/TR/2002/WD-xptr-xpointer-20021219/.)
XPath 1.0
James Clark, Steve DeRose, edytorzy. Język XML Path (XPath) Wersja 1.0. World Wide Web Consortium, 1999. (Patrz http://www.w3.org/TR/1999/REC-xpath-19991116.)
IRI draft
Międzynarodowe Identyfikatory Źródła (IRI). (Patrz http://www.ietf.org/internet-drafts/draft-duerst-iri-11.txt.)
Model Znaku
Martin J. Dürst, François Yergeau, Misha Wolf, Asmus Freytag, Tex Texin. Model Znaków dla World Wide Web 1.0: Normalizacja. World Wide Web Consortium, 2001. (Patrz http://www.w3.org/TR/charmod-norm/.)
Schematy XML
Henry S. Thompson, David Beech, Murray Maloney, Noah Mendelsohn, edytorzy. Schemat XML Część 1: Struktury. World Wide Web Consortium, 2001. (Patrz http://www.w3.org/TR/2001/REC-xmlschema-1-20010502/.)
XSL-FO
Sharon Adler et al. Rozszerzalny Język Stylesheet (XSL). World Wide Web Consortium, 2001. (Patrz http://www.w3.org/TR/2001/REC-xsl-20011015/.)
XHTML
Steven Pemberton et al. XHTML 1.0 Rozszerzalny Język Znaczników HyperText (Drugie wydanie). World Wide Web Consortium, 2002. (Patrz http://www.w3.org/TR/2002/REC-xhtml1-20020801/.)

C Przykłady (Nienormatywne)

C.1 Przykład Podstawowej Inkluzji

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>

C.2 Przykład inkluzji tekstowej

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>

C.3 Inkluzja tekstowa przykładu XML

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>&lt;?xml version='1.0'?&gt;
&lt;data&gt;
  &lt;item&gt;&lt;![CDATA[Brooks &amp; Shields]]&gt;&lt;/item&gt;
&lt;/data&gt;</example>
</document>

C.4 Przykład fragmentu inkluzji

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>

C.5 Przykład zakresu inkluzji

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>

C.6 Przykład rezerwy awaryjnej

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>