English to Spanish Translation by Trusted Translations, Inc.

Otras Traducciones de W3 en Spanish Translator Services

XML Inclusions (XInclude) Version 1.0
Este documento es una traduccion de XML Inclusions (XInclude) Version 1.0
La version inglesa de esta especificacion es la unica con valor normativo y puede encontrarse en: http://www.w3.org/TR/xinclude/

W3C

XML Inclusions (XInclude) Versión 1.0

Recomendación del W3C, 20 de diciembre de 2004

Esta versión:
http://www.w3.org/TR/2004/REC-xinclude-20041220/
Última versión:
http://www.w3.org/TR/xinclude/
Versión anterior:
http://www.w3.org/TR/2004/PR-xinclude-20040930/
Editores:
Jonathan Marsh, Microsoft mailto:jmarsh@microsoft.com
David Orchard, BEA Systems mailto:dorchard@bea.com

Por favor consulte la sección de erratas de este documento, que puede incluir algunas correcciones normativas.

Vea también las traducciones.

Este documento también está disponible en los siguientes formatos no normativos: XML.


Resumen

Este documento especifica un modelo de procesamiento y una sintaxis para un mecanismo genérico de inclusión. La inclusión se realiza combinando diferentes conjuntos de información XML en un único conjunto compuesto. La indicación de los documentos XML (conjuntos de información) que se combinarán y el control del proceso de combinación se expresan en una sintaxis compatible con XML (elementos, atributos, referencias URI).

Estado de este documento

Esta sección describe el estado de este documento al momento de su publicación. Pueden reemplazarlo otros documentos. Una lista de las publicaciones actuales del W3C y la última revisión de este informe técnico puede hallarse en el Índice de informes técnicos del W3C en http://www.w3.org/TR/.

Este documento es una Recomendación del W3C. Ha sido revisado por miembros del W3C y otras partes interesadas, y ha sido avalado como Recomendación del W3C por el Director. Es un documento estable y puede ser empleado como material de referencia o citado como referencia normativa en otro documento. El papel del W3C en la creación de la Recomendación es atraer la atención hacia la especificación y fomentar su amplia implementación. Esto mejora la funcionalidad y la interoperabilidad de la Web.

Este documento ha sido producido por el W3C XML Core Working Group como parte de la Actividad en XML. La versión inglesa de esta especificación es la única con valor normativo. Sin embargo, pueden encontrarse traducciones de este documento en la dirección http://www.w3.org/2003/03/Translations/byTechnology?technology=xinclude10.

El XML Core Working Group cree que esta especificación responde todas las inquietudes planteadas en las fases de Última llamada y Recomendación candidata (durante la revisión de la Propuesta de recomendación no surgieron inquietudes). Las implementaciones conocidas están documentadas en el Informe de implementación de XInclude. Está disponible un Paquete de prueba para ayudar a evaluar la conformidad con esta especificación.

Este documento fue creado bajo la Política actual de patentes del 24 de enero de 2002 modificada por el Procedimiento de transiciones de políticas de patentes del W3C. Toda persona que tenga conocimiento de una patente que, en su opinión, contenga Reclamos Esenciales respecto a esta especificación, debe divulgar la información, conforme a la sección 6 de la Política de Patentes del W3C. En la página de divulgación pública de derechos de propiedad intelectual puede hallarse documentación de propiedad intelectual que puede ser pertinente para esta especificación.

Si encuentra errores en este documento, por favor informe de ellos a www-xml-xinclude-comments@w3.org; hay archivos públicos disponibles. La lista de erratas para este documento se encuentra disponible en http://www.w3.org/2004/12/xinclude-errata.

Índice

1 Introducción
    1.1 Relación con XLink
    1.2 Relación con las entidades externas XML
    1.3 Relación con las DTD
    1.4 Relación con los esquemas XML
    1.5 Relación con mecanismos de inclusión dependientes de la gramática
2 Terminología
3 Sintaxis
    3.1 Elemento xi:include
    3.2 Elemento xi:fallback
4 Modelo de procesamiento
    4.1 Ubicación de inclusión
        4.1.1 Mecanismos de escape para los valores de los atributos
        4.1.2 Uso de XInclude con negociación de contenido
    4.2 Ítems incluidos cuando parse="xml"
        4.2.1 Ítems de información de documento
        4.2.2 Nodos múltiples
        4.2.3 Ubicaciones de rangos
        4.2.4 Ubicaciones de puntos
        4.2.5 Ítems de información de elemento, comentario e instrucción de procesamiento
        4.2.6 Ítems de información de atributo y declaración de espacio de nombres
        4.2.7 Inclusión circular
    4.3 Ítemsm incluidos cuando parse="text"
    4.4 Mecanismo de recuperación de errores
    4.5 Creación del conjunto de información resultado
        4.5.1 Entidades no analizadas
        4.5.2 Notaciones
        4.5.3 Ajuste de la propiedad referencias
        4.5.4 Ajuste del espacio de nombres
        4.5.5 Ajuste del URI base
        4.5.6 Ajuste del lenguaje
        4.5.7 Propiedades conservadas por el conjunto de información
5 Conformidad
    5.1 Conformidad de marcado
    5.2 Conformidad de aplicación
    5.3 Conformidad con conjuntos de información XML

Apéndices

A Referencias
B Referencias (no normativas)
C Ejemplos (no normativos)
    C.1 Ejemplo de inclusión básica
    C.2 Ejemplo de inclusión textual
    C.3 Ejemplo de inclusión textual de XML
    C.4 Ejemplo de inclusión de fragmento
    C.5 Ejemplo de inclusión de rango
    C.6 Ejemplo de recuperación de errores


1 Introducción

Muchos lenguajes de programación ofrecen algún mecanismo de inclusión para facilitar la modularidad. Dicha necesidad a menudo se da también en los lenguajes de marcado. Esta especificación introduce un mecanismo genérico para combinar documentos XML (representados por sus conjuntos de información) para que puedan usarlo aquellas aplicaciones que requieran dicha posibilidad. La sintaxis aprovecha las construcciones existentes del XML: elementos, atributos y referencias URI.

1.1 Relación con XLink

XInclude es diferente de las características de enlace descritas en [XML Linking Language], concretamente los vínculos con el valor de atributo show="embed". Esos vínculos brindan una sintaxis, independiente del medio, para indicar que un recurso debe insertarse gráficamente dentro de la presentación del documento. XLink no especifica un modelo de procesamiento concreto; solamente facilita a las aplicaciones de nivel superior la detección de vínculos y el reconocimiento de los metadatos asociados.

XInclude, por otra parte, especifica una transformación entre tipos de medio concretos (XML a XML), y define un modelo de procesamiento específico para la combinación de conjuntos de información. El procesamiento XInclude se realiza en un bajo nivel, usualmente por medio de un procesador genérico XInclude que pone el conjunto de información resultante a disposición de aplicaciones de nivel superior.

La inclusión simple de ítems de información, según se describe en esta especificación, es diferente de la transclusión, que conserva información contextual (por ejemplo, estilos).

1.2 Relación con las entidades externas XML

Entre XInclude y las entidades externas [XML 1.0] o [XML 1.1] existen ciertas diferencias que las hacen tecnologías complementarias.

El procesamiento de las entidades externas (lo mismo que el resto de las DTD) se produce durante el análisis del documento. XInclude, por su parte, opera sobre conjuntos de información, de modo que es ortogonal al análisis.

La declaración de entidades externas requiere una DTD o un subconjunto interno, lo que impone a la inclusión un conjunto de dependencias, por ejemplo, que la sintaxis de la declaración DOCTYPE requiere indicar el nombre del elemento del documento (que es ortogonal a la inclusión en muchos casos). Los analizadores validadores deben tener definido un modelo de contenido completo. XInclude es ortogonal a la validación y al nombre del elemento de documento.

Las entidades externas ofrecen un nivel de indirección, ya que se deben declarar y nombrar, e invocar por separado. XInclude, por su parte, usa referencias directas. Para aquellas aplicaciones que generan salida XML de manera incremental, el hecho de no tener que declarar las inclusiones previamente puede constituir un beneficio.

Normalmente, la imposibilidad de cargar una entidad externa es un error fatal. XInclude permite al autor suministrar contenido para usar como predeterminado si no se puede cargar el recurso remoto.

A muchos autores de documentos XML bien formados simples, la sintaxis de los subconjuntos internos les resulta compleja. La sintaxis de XInclude se basa en construcciones XML familiares.

1.3 Relación con las DTD

XInclude no define ninguna relación con la validación de DTD. XInclude describe una transformación entre conjuntos de información, no un cambio en la forma de realizar el análisis de XML. XInclude no define un mecanismo para la validación DTD del conjunto de información resultante.

1.4 Relación con los esquemas XML

XInclude no define ninguna relación con los conjuntos de información ampliados que produce la aplicación de un esquema XML. El conjunto de información ampliado puede suministrarse como conjunto de información de entrada, o se puede aplicar la ampliación al conjunto de información que resulta de la inclusión.

1.5 Relación con mecanismos de inclusión dependientes de la gramática

En determinadas gramáticas XML se han introducido mecanismos de inclusión específicos para fines particulares. XInclude brinda un mecanismo genérico para el reconocimiento y el procesamiento de inclusiones, lo que puede significar una simplificación del trabajo de escritura, mayor rendimiento y menor redundancia de código.

2 Terminología

[Definición: Las palabras clave debe, no debe, requerido, deberá, no deberá, debería, no debería, recomendado, puede y opcional en esta especificación se interpretarán según lo descrito en [IETF RFC 2119].]

[Definición: El término conjunto de información se refiere a la salida de un procesador [XML 1.0] o [XML 1.1], expresada como una colección de ítems de información y propiedades, según se define en la especificación [XML Information Set].] En este documento, se usa el término conjunto de información como traducción del inglés information set (infoset).

[Definición: El término error fatal se refiere a la presencia de factores que impiden la continuación normal del procesamiento.] [Definición: El término error de recurso se refiere a todo fallo que se produzca al intentar obtener un recurso a partir de un URL.] Los procesadores XInclude deben detener el procesamiento siempre que encuentren un error que no sea un error de recurso; estos últimos los deben manejar según lo descrito en 4.4 Mecanismo de recuperación de errores.

3 Sintaxis

XInclude define un espacio de nombres asociado con el URI http://www.w3.org/2001/XInclude. El espacio de nombres de XInclude contiene dos elementos cuyos nombres locales son include y fallback. Para más comodidad, en esta especificación estos elementos se denominarán xi:include y xi:fallback, respectivamente.

El siguiente esquema XML (no normativo) [XML Schemas] ejemplifica el modelo de contenido del espacio de nombres 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 Elemento xi:include

Los atributos del elemento xi:include son los siguientes:

href

Un valor que, una vez aplicados los mecanismos de escape que correspondan (véase Mecanismos de escape para los valores de los atributos), da por resultado una referencia URI o una referencia IRI que indica la ubicación del recurso que debe incluirse. El atributo href es opcional, y su ausencia equivale a indicar href="" (es decir, que la referencia apunta al mismo documento). Si el atributo href está ausente y parse="xml", debe haber un atributo xpointer. No deben usarse identificadores de fragmento; su presencia constituye un error fatal. Si el valor resultante es un URI o IRI sintácticamente inválido, esto debería informarse como un error fatal, pero en algunas implementaciones no resulta práctico distinguir esta situación de un error de recurso.

Observación:

Si el URI termina en #, se considera según [IETF RFC 2396] que incluye un identificador de fragmento vacío, y da lugar a un error fatal, según lo descrito.

Observación:

Una característica clave de XInclude es que permite forzar la conversión de un recurso a un tipo indicado por el usuario durante la inclusión (XML o texto). Es decir que a los fines del procesamiento de la inclusión, el tipo de medio devuelto es básicamente ignorado, y en general la sintaxis del identificador de fragmento del tipo de medio devuelto no será aplicable al tipo indicado por el usuario. Tratándose de inclusiones con parse="xml", los subrecursos se identifican mediante un atributo separado xpointer, que se aplica luego de la conversión de tipo. Si bien esto no impide la identificación de subrecursos de documentos XML por medio de un URI (véase Architecture of the World Wide Web [Identification]), torna imposible usar estos identificadores directamente dentro de XInclude.

parse

Indica si el recurso debe ser incluido como XML analizado o como texto. El atributo parse permite a XInclude darle prioridad al autor del documento que realiza la inclusión sobre el servidor del documento incluido, en cuanto al modo de procesar el contenido incluido. Si el valor del atributo es "xml", se debe analizar el recurso como XML y combinar los conjuntos de información. Si el valor del atributo es "text", el recurso se debe incluir como ítems de información de carácter. Este atributo es opcional; si no se indica, su valor implícito es "xml" (aun en ausencia de una declaración de valor por defecto). Todo valor que no sea "xml" o "text" constituye un error fatal.

Observación:

Para garantizar la interoperabilidad entre sistemas validadores y no validadores, el atributo parse no debería incluir espacios en blanco.

xpointer

Cuando parse="xml", se evalúa el XPointer (véase [XPointer Framework]) contenido en el atributo xpointer para identificar la porción del recurso que se incluirá. Este atributo es opcional, y si no se lo indica, se incluye la totalidad del recurso. El atributo xpointer no debe estar presente cuando parse="text". Si el atributo xpointer está ausente, debe haber un atributo href.

Observación:

Puesto que el atributo xpointer no es una referencia URI, el XPointer no debe contener el mecanismo de escape % y no es necesario que el procesador aplique o invierta tal mecanismo de escape.

encoding

Cuando parse="text", en ocasiones resulta imposible determinar correctamente la codificación del recurso de texto. El atributo encoding especifica el modo en que se deberá traducir el recurso. El valor de este atributo es un EncName, según se define en la especificación de XML, sección 4.3.3, regla [81]. El atributo encoding se ignora cuando parse="xml".

accept

El procesador XInclude puede usar el valor del atributo accept como ayuda para la negociación de contenido. Cuando un procesador XInclude obtiene un recurso a través de HTTP, debería incluir el valor del atributo accept, si lo hubiera, como encabezado Accept en la petición HTTP, según se describe en la sección 14.1 de [IETF RFC 2616]. Puesto que en los encabezados HTTP no están permitidos valores que contengan caracteres fuera del intervalo que va de #x20 a #x7E, su presencia debe señalarse como un error fatal.

accept-language

El procesador XInclude puede usar el valor del atributo accept-language como ayuda para la negociación de contenido. Cuando un procesador XInclude obtiene un recurso a través de HTTP, debería incluir el valor del atributo accept-language, si lo hubiera, como encabezado Accept-Language en la petición HTTP, según se describe en la sección 14.4 de [IETF RFC 2616]. Puesto que en los encabezados HTTP no están permitidos valores que contengan caracteres fuera del intervalo que va de #x20 a #x7E, su presencia debe señalarse como un error fatal.

En el elemento xi:include se pueden incluir otros atributos además de los mencionados. Los nombres de atributos sin prefijo se reservan para versiones futuras de esta especificación y los procesadores XInclude 1.0 deben ignorarlos.

La propiedad hijos del elemento xi:include puede incluir un único elemento xi:fallback. La presencia de más de un elemento xi:fallback, un elemento xi:include o cualquier otro elemento del espacio de nombres de XInclude constituye un error fatal. Esta especificación no impone restricción alguna sobre el resto del contenido (texto, instrucciones de procesamiento, elementos ajenos al espacio de nombres de XInclude, descendientes de elementos hijos). Ese contenido es ignorado por el procesador XInclude, es decir, no influye sobre el procesamiento de la inclusión y no aparece en la lista de hijos del conjunto de información resultante. Ese contenido podría ser usado por aplicaciones que analicen un conjunto de información antes de la inclusión o entregarse a una aplicación después de la inclusión por medios que no sean las propiedades normales del conjunto de información.

El siguiente fragmento (no normativo) de DTD muestra un ejemplo de declaración del elemento 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 Elemento xi:fallback

El elemento xi:fallback aparece como hijo del elemento xi:include y brinda un mecanismo de recuperación ante la falta de un recurso. Cuando se encuentra un error de recurso, se reemplaza el elemento xi:include con el contenido del elemento xi:fallback. Si el elemento xi:fallback está vacío, el elemento xi:include se elimina del resultado. Si no se indica un elemento xi:fallback, un error de recurso da lugar a un error fatal.

El elemento xi:fallback sólo puede aparecer como hijo de un elemento xi:include. Se producirá un error fatal si un elemento xi:fallback aparece en un documento en cualquier lugar que no sea como hijo directo del elemento xi:include (antes de realizar el procesamiento de inclusión sobre los contenidos del elemento). Se producirá un error fatal si el elemento xi:fallback contiene cualquier elemento del espacio de nombres de XInclude que no sea xi:include.

El elemento xi:fallback puede contener atributos. Los nombres de atributos sin prefijo se reservan para versiones futuras de esta especificación y los procesadores XInclude 1.0 deben ignorarlos.

El siguiente fragmento (no normativo) de DTD muestra un ejemplo de declaración del elemento xi:fallback:

<!ELEMENT xi:fallback ANY>

<!ATTLIST xi:fallback
	xmlns:xi   CDATA   #FIXED   "http://www.w3.org/2001/XInclude"
>

4 Modelo de procesamiento

La inclusión, según se define en este documento, es un tipo específico de transformación de conjuntos de información (véase [XML Information Set]).

[Definición: La entrada para la transformación de inclusión es un conjunto de información de origen.] [Definición: La salida, llamada conjunto de información resultado, es un nuevo conjunto de información que combina el conjunto de información de origen con los conjuntos de información de los recursos identificados por las referencias URI o IRI que aparecen en los elementos xi:include.] Es decir que está implícito algún mecanismo para resolver los URI o IRI y devolver como conjuntos de información los recursos identificados. Las entidades XML bien formadas para las que no haya conjunto de información definido (por ejemplo, una entidad externa con más de un elemento de nivel superior) están fuera del alcance de esta especificación, sea para usarlas como conjunto de información de origen o como el conjunto de información resultado.

Los elementos xi:include en el conjunto de información de origen hacen las veces de instrucciones de transformación de inclusión. [Definición: Los ítems de información designados por el elemento xi:include se denominan ítems incluidos de nivel superior.] [Definición: Los ítems incluidos de nivel superior junto con sus atributos, espacios de nombres y descendientes, se denominan ítems incluidos.] El conjunto de información resultado es en esencia una copia del conjunto de información de origen, donde cada elemento xi:include y sus descendientes es reemplazado por los correspondientes ítems incluidos.

4.1 Ubicación de inclusión

El valor del atributo href, una vez aplicados los mecanismos de escape según lo indicado en 4.1.1 Mecanismos de escape para los valores de los atributos, se interpreta ya sea como una referencia URI o como una referencia IRI. EL URI base para los URI o IRI relativos es el URI base del elemento xi:include según se especifica en [XML Base]. [Definición: El URI o IRI resultante de la resolución del valor normalizado del atributo href (o la cadena vacía si no existe tal atributo) a la forma de URI o IRI absoluto se denomina ubicación de inclusión.]

La inexistencia de un valor para el atributo href, sea por la presencia de href="" o por la ausencia del atributo href, representa un caso que puede ser incompatible con ciertas estrategias de implementación. Por ejemplo, puede ocurrir que un procesador XInclude no tenga una representación textual del conjunto de información de origen para incluir como parse="text"; o que cuestiones relacionadas con la transmisión en flujo continuo le impidan acceder a otra parte del documento usando parse="xml" y un XPointer. Una implementación puede optar por tratar la inexistencia de valor para el atributo href como un error de recurso. Las implementaciones deberían documentar las condiciones en las que ocurren tales errores de recurso.

4.1.1 Mecanismos de escape para los valores del atributo href

El valor del atributo href se convierte a una referencia URI o una referencia IRI, según sea adecuado para la implementación.

Actualmente se está trabajando en producir un RFC donde se definirán los Identificadores de Recurso Internacionalizados (IRI). Puesto que este trabajo aún no está terminado, en esta sección definimos las referencias IRI sintácticamente. Esperamos emitir una errata que reemplace partes de esta sección con una referencia al RFC cuando éste sea publicado. Para una definición y una discusión de los IRI en términos más generales, véase [IRI draft] (trabajo en progreso).

[Definición: Una referencia IRI es una cadena que puede convertirse en una referencia URI aplicando los mecanismos de escape a los siguientes caracteres:]

  • los caracteres del plano Unicode 0: #xA0 - #xD7FF, #xF900-#xFDCF, #xFDF0-#xFFEF

  • los caracteres de los planos Unicode 1-14: #x10000-#x1FFFD ... #xE0000-#xEFFFD

Para convertir el valor del atributo href a una referencia IRI, se deben aplicar mecanismos de escape a los siguientes caracteres:

  • espacio #x20

    Observación:

    Se recomienda a los autores evitar el uso de espacios a los que no se hayan aplicado mecanismos de escape, ya que XML Schema los ha identificado como un riesgo para la interoperabilidad.

  • los delimitadores < #x3C, > #x3E y " #x22

  • los caracteres desaconsejados { #x7B, } #x7D, | #x7C, \ #x5C, ^ #x5E y ` #x60

El mecanismo de escape para estos caracteres es el siguiente:

  1. Cada carácter adicional se convierte a uno o más bytes en UTF-8 [Unicode].

  2. A los bytes resultantes se les aplica el mecanismo de escape de los URI (es decir, se los convierte a %HH, donde HH es la representación hexadecimal del valor del byte).

  3. Se reemplaza el carácter original por la secuencia de caracteres resultante.

Para convertir una referencia IRI a referencia URI, se debe aplicar el mismo mecanismo de escape a los caracteres adicionales permitidos en un IRI.

4.1.2 Uso de XInclude con negociación de contenido

El uso de un mecanismo como la negociación de contenido del HTTP [IETF RFC 2616] añade al uso de XInclude otro nivel de posible complejidad. Los desarrolladores que usen XInclude en situaciones donde es probable o posible que haya negociación de contenido, deberían ser conscientes de la posibilidad de que el contenido que incluyan difiera estructuralmente de lo que esperaban, incluso aunque sea contenido XML. Por ejemplo, un único URI o IRI puede devolver una representación del recurso en XML puro, una representación XSL-FO [XSL-FO] o una representación XHTML [XHTML], así como versiones en diferentes codificaciones de caracteres o diferentes lenguajes.

Los autores cuyo procesamiento XInclude dependa de la recepción de un vocabulario de XML en particular, deberían usar los atributos accept y accept-language para aumentar la probabilidad de recibir el recurso en el formato esperado.

4.2 Ítems incluidos cuando parse="xml"

Cuando parse="xml", luego de resolver la referencia de la ubicación de inclusión se recupera el recurso y se crea un conjunto de información analizando el recurso como si el tipo de medio fuera application/xml (incluida la determinación de la codificación de caracteres).

Observación:

Los detalles de la creación de un conjunto de información se dejan deliberadamente sin especificar, para permitir flexibilidad a las implementaciones y evitar la definición de un modelo de procesamiento particular para los componentes de la arquitectura XML. Por ejemplo, esta especificación no impone reglas sobre detalles particulares, como si se usan esquemas XML o validación DTD.

Observación:

La codificación de caracteres del recurso que hace la inclusión puede ser diferente de la del recurso incluido. Esto no afecta al conjunto de información resultante, pero quizá deba ser tenido en cuenta en una serialización posterior.

Si por cualquier motivo un recurso no está disponible (por ejemplo, porque el recurso no existe, hay dificultades de conexión o restricciones de seguridad que impiden su recuperación, el esquema URI no es de un tipo que admita recuperación, la codificación del recurso es incompatible o mecanismos propios de la implementación determinan que el recurso no es XML), el resultado es un error de recurso. Si el contenido del recurso no es XML bien formado, el resultado es un error fatal.

Observación:

La distinción entre error de recurso y error fatal depende en cierta medida de la implementación. Supóngase una ubicación de inclusión que devuelve un documento HTML, tal vez una página de error. Un procesador podría determinar que el recurso no permite crear un conjunto de información (por ejemplo, examinando el tipo de medio) y generar un error de recurso, con lo que se habilita el mecanismo de recuperación de error. Otro procesador no provisto de esa heurística podría intentar analizar el recurso como si fuera XML y encontrarse con un error (fatal) debido a que el recurso no está bien formado.

[Definición: Los elementos xi:include en este conjunto de información se procesan recursivamente para crear el conjunto de información adquirido. Tratándose de referencias dentro del mismo documento (mediante el atributo xpointer) se usa como conjunto de información adquirido el conjunto de información de origen.]

[Definición: La porción del conjunto de información adquirido que se incluirá se denomina objetivo de inclusión.] El ítem de información de documento del conjunto de información adquirido hace las veces de objetivo de inclusión a menos que el atributo xpointer esté presente e identifique un subrecurso. Los procesadores XInclude deben ser compatibles con XPointers de las formas descritas en [XPointer Framework] y [XPointer element() scheme]. Los procesadores XInclude opcionalmente pueden admitir otras formas de XPointer como las descritas en [XPointer xpointer() Scheme]. Un error en el XPointer es un error de recurso.

El esquema xpointer() ([XPointer xpointer() Scheme]) no se especifica en términos de [XML Information Set], sino que se basa en el modelo de datos [XPath 1.0], porque el conjunto de información XML aún no había sido desarrollado. La conversión de ubicaciones de nodo XPath a ítems de información es muy sencilla. Sin embargo, xpointer() da por sentado que se han expandido todas las entidades. Por eso, intentar resolver un esquema xpointer() en un documento que contiene ítems de información de referencia de entidad no expandida es un error fatal.

El conjunto de ítems incluidos de nivel superior se deriva del conjunto de información adquirido de la manera que se explica a continuación.

4.2.1 Ítems de información de documento

El objetivo de inclusión puede ser un ítem de información de documento (por ejemplo, si no se indicó un atributo xpointer o si el XPointer hace referencia explícitamente a la raíz del documento). En este caso, el conjunto de ítems incluidos de nivel superior está formado por los hijos del ítem de información de documento del conjunto de información adquirido, menos el hijo ítem de información de declaración de tipo de documento, si lo hay.

Observación:

La especificación de los conjuntos de información XML no prevé la conservación del espacio en blanco fuera del elemento documento, y XInclude no añade ninguna previsión en tal sentido.

4.2.2 Nodos múltiples

El objetivo de inclusión puede estar formado por más de un nodo. En este caso, el conjunto de ítems incluidos de nivel superior es el conjunto de ítems de información del conjunto de información adquirido correspondientes a los nodos a los que hace referencia el XPointer, en el orden en el que aparecen en el conjunto de información adquirido.

4.2.3 Ubicaciones de rangos

El objetivo de inclusión puede ser un conjunto de ubicaciones que represente un rango o un conjunto de rangos.

Cada rango corresponde a un conjunto de ítems de información en el conjunto de información adquirido. [Definición: Se dice que un ítem de información es seleccionado por un rango si aparece después del punto inicial del rango (en el orden del documento) y antes del punto final del rango.] [Definición: Se dice que un ítem de información es parcialmente seleccionado por un rango si sólo contiene el punto inicial del rango o el punto final del rango.] Por definición, un ítem de información de carácter no puede estar parcialmente seleccionado.

El conjunto de ítems incluidos de nivel superior es la unión, en el orden del documento y con eliminación de duplicados, de los ítems de información seleccionados o parcialmente seleccionados por el rango. La propiedad hijos de los ítems de información seleccionados no se modifica. La propiedad hijos de los ítems de información parcialmente seleccionados es el conjunto de ítems de información que a su vez están seleccionados o parcialmente seleccionados, y así sucesivamente.

4.2.4 Ubicaciones de puntos

El objetivo de inclusión puede ser un conjunto de ubicaciones que represente un punto. En este caso, el conjunto de ítems incluidos está vacío.

4.2.5 Ítem de información de elemento, comentario e instrucción de procesamiento

El objetivo de inclusión puede ser un nodo elemento, un nodo comentario o un nodo instrucción de procesamiento, que representan respectivamente un ítem de información de elemento, un ítem de información de comentario o un ítem de información de instrucción de procesamiento. En este caso, el conjunto de ítems incluidos de nivel superior está compuesto por el ítem de información correspondiente al nodo elemento, comentario o instrucción de procesamiento en el conjunto de información adquirido.

4.2.6 Ítems de información de atributo y declaración de espacio de nombres

Si el objetivo de inclusión es un nodo atributo o un nodo espacio de nombres, se produce un error fatal.

4.2. 7 Inclusión circular

Cuando se está procesando recursivamente un elemento xi:include, se produce un error fatal si se procesa otro elemento xi:include con una ubicación de inclusión y un valor de atributo xpointer que ya han sido procesados en la cadena de inclusión.

Dicho de otro modo, los siguientes casos son todos ellos legales:

  • Un elemento xi:include puede hacer referencia al documento que incluye el elemento de inclusión, cuando parse="text".

  • Un elemento xi:include puede identificar otra parte diferente del mismo recurso local (el mismo href, diferente xpointer).

  • Dos elementos xi:include no anidados pueden identificar un recurso que a su vez contenga un elemento xi:include.

Los siguientes casos son ilegales:

  • Un elemento xi:include que apunte a sí mismo o a un ancestro de sí mismo, cuando parse="xml".

  • Un elemento xi:include que apunte a cualquier elemento de inclusión (o uno de sus ancestros) que ya hayan sido procesados en un nivel superior.

4.3 Ítems incluidos cuando parse="text"

Cuando parse="text", luego de resolver la ubicación de inclusión se recupera el recurso y se transforma a un conjunto de ítems de información de carácter. Esto facilita la inclusión de ejemplos operativos de XML y de otros formatos de texto.

Si por cualquier motivo un recurso no está disponible (por ejemplo, porque el recurso no existe, hay dificultades de conexión o restricciones de seguridad que impiden su recuperación, el esquema URI no es de un tipo que admita su recuperación o la codificación del recurso es incompatible), el resultado es un error de recurso.

La codificación de tales recursos se determina mediante:

  • información de codificación externa, si la hay; de lo contrario

  • si el tipo de medio del recurso es text/xml, application/xml, o concuerda con las convenciones text/*+xml o application/*+xml según se describen en XML Media Types [IETF RFC 3023], se determina la codificación según lo especificado en XML; de lo contrario

  • el valor del atributo encoding, si lo hay; de lo contrario

  • UTF-8.

Toda secuencia de bytes por fuera del intervalo permitido por la codificación produce un error fatal. La presencia de caracteres que no están permitidos en los documentos XML también produce un error fatal.

Cada carácter obtenido de la transformación del recurso se representa en los ítems incluidos de nivel superior como un ítem de información de carácter cuya propiedad código de carácter es igual al código de carácter en la codificación ISO 10646 y cuya propiedad espacio en blanco dentro del contenido del elemento es falso.

En [Character Model] se examina la normalización del texto incluido.

4.4 Mecanismo de recuperación de errores

Los procesadores XInclude deben tener mecanismos de recuperación para el caso de un error de recurso, según se indica a continuación:

Si la propiedad hijos del ítem de información de elemento xi:include en el conjunto de información de origen contiene exactamente un elemento xi:fallback, los ítems incluidos de nivel superior son los ítems de información correspondientes al resultado de realizar el procesamiento XInclude en los hijos del elemento xi:fallback. La ausencia de un elemento xi:fallback o la presencia de más de uno resulta en un error fatal.

Observación:

El contenido para recuperación de errores no depende del valor del atributo parse. El elemento xi:fallback puede contener etiquetas de marcado, incluso si parse="text". Del mismo modo, puede contener una cadena simple cuando parse="xml".

4.5 Creación del conjunto de información resultado

El conjunto de información resultado es una copia del conjunto de información de origen, donde cada xi:include se procesa de la siguiente manera:

Se busca el ítem de información para el elemento xi:include. [Definición: La propiedad padre de este ítem hace referencia a un ítem de información llamado padre de inclusión.] La propiedad hijos del padre de inclusión se modifica reemplazando el ítem de información de elemento xi:include con los ítems incluidos de nivel superior. Se establece el padre de inclusión como propiedad padre de cada ítem incluido

Se produce un error fatal si se intenta reemplazar un elemento xi:include que aparece como elemento documento (de nivel superior) en el conjunto de información de origen con algo que no sea una lista de cero o más comentarios, cero o más instrucciones de procesamiento y un elemento.

Algunos procesadores pueden ser incapaces de representar la propiedad espacios de nombres en ámbito (in-scope namespaces) de un elemento si no incluye ligaduras para todos los prefijos ligados en la propiedad espacios de nombres en ámbito de su padre. Esos procesadores pueden incluir ligaduras de espacio de nombres adicionales heredadas del padre de inclusión en la propiedad espacios de nombres en ámbito de los ítems incluidos.

La historia de inclusión de cada ítem incluido de nivel superior queda registrada en la propiedad de extensión historia de inclusión. La propiedad historia de inclusión es una lista de ítems de información de elemento que representan los elementos xi:include para los niveles recursivos de inclusión. Si una propiedad historia de inclusión ya aparece en un ítem incluido de nivel superior, el ítem de información del elemento xi:include se agrega al principio de la lista. Si no hay una propiedad historia de inclusión, entonces se añade esta propiedad, con el ítem de información del elemento xi:include como único valor.

Todos los ítems incluidos aparecerán en el conjunto de información resultado. Esto incluye los ítems de información de referencia de entidades no expandidas, si los hubiera.

Las referencias al mismo documento dentro de los elementos xi:include se resuelven en relación al conjunto de información de origen. Esto da por resultado que el orden en que se procesen los elementos xi:include no afecte el resultado.

En el ejemplo siguiente, la segunda inclusión siempre apunta al primer elemento xi:include y no a sí misma, independientemente del orden en que se procesen las inclusiones. De este modo, el resultado de esta inclusión es dos copias de something.xml y no se produce un error de inclusión circular.

<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 Entidades no analizadas

Todo ítem de información de entidad no analizada que aparezca en la propiedad referencias de un atributo de los ítems incluidos o en cualquiera de sus descendientes se agrega a la propiedad entidades no analizadas del ítem de información de documento del conjunto de información resultado, si no es un duplicado de un miembro existente. En el conjunto de información resultado no aparecen duplicados.

Los ítems de entidad no analizada que coincidan en nombre, identificador de sistema, identificador público, URI base de declaración, nombre de notación y notación se consideran duplicados. Una aplicación puede además ser capaz de descubrir por otros medios la presencia de entidades no analizadas duplicadas. Por ejemplo, si el URI resultante de combinar el identificador de sistema y el URI base de declaración es el mismo.

Incluir ítems de entidad no analizada con el mismo nombre pero que no sean duplicados es un error fatal.

4.5.2 Notaciones

Todo ítem de información de notación que aparezca en la propiedad referencias de un atributo de los ítems incluidos o en cualquiera de sus descendientes se agrega a la propiedad notaciones del ítem de información de documento del conjunto de información resultado, si no es un duplicado de un miembro existente. Del mismo modo, toda notación a la que haga referencia una entidad no analizada añadida según se describe en 4.5.1 Entidades no analizadas se agrega a menos que sea un duplicado. En el conjunto de información resultado no aparecen duplicados.

Los ítems de notación que coincidan en nombre, identificador de sistema, identificador público y URI base de declaración se consideran duplicados. Una aplicación puede además ser capaz de descubrir por otros medios la presencia de notaciones duplicadas. Por ejemplo, si el URI resultante de combinar el identificador de sistema y el URI base de declaración es el mismo.

Incluir ítems de notación con el mismo nombre pero que no sean duplicados es un error fatal.

4.5.3 Ajuste de la propiedad referencias

Durante la inclusión, el ítem de información de atributo cuya propiedad tipo de atributo es IDREF o IDREFS tiene una propiedad referencias con cero o más valores de elementos del conjunto de información de origen o del conjunto de información incluido. Estos valores deben ajustarse para que correspondan a valores de elementos que aparezcan en el conjunto de información resultado. Durante este proceso, XInclude también corrige las inconsistencias entre la propiedad referencias y la propiedad tipo de atributo, que pueden surgir en las siguientes circunstancias:

  • Un fragmento de documento contiene un IDREF que apunta a un elemento en el documento incluido pero fuera de la parte que se incluye. En este caso, el conjunto de información resultado no contiene ningún elemento que corresponda al valor del elemento en la propiedad referencias original.

  • Un documento o un fragmento de documento no está autocontenido. Es decir, contiene IDREF que no se refieren a un elemento dentro de ese documento o fragmento de documento, con la intención de que esas referencias se realicen después de la inclusión. En este caso, el valor de la propiedad referencias es desconocido o inexistente.

  • El conjunto de información resultado tiene conflictos de ID, es decir, más de un atributo con tipo de atributo ID con el mismo valor normalizado. En este caso, los atributos con tipo de atributo IDREF o IDREFS con el mismo valor normalizado pueden tener diferentes valores para sus propiedades referencias.

Al resolver estas inconsistencias, XInclude toma la propiedad tipo de atributo como definitiva. En el conjunto de información resultado, el valor de la propiedad referencias de un ítem de información de atributo cuya propiedad tipo de atributo es IDREF o IDREFS se ajusta de la siguiente manera:

Para cada símbolo en la propiedad valor normalizado, la propiedad referencias contiene un ítem de información de elemento con las mismas propiedades que el ítem de información de elemento en el conjunto de información resultado con un atributo con tipo de atributo ID y valor normalizado igual al símbolo. Los elementos en la propiedad referencias aparecen en el mismo orden que los símbolos que aparecen en el valor normalizado. Si para uno cualquiera de los valores de los símbolos no se encuentra ningún elemento o se encuentra más de uno, la propiedad referencias queda sin valor.

4.5.4 Ajuste del espacio de nombres

La propiedad espacios de nombres en ámbito asegura que el ámbito del espacio de nombres se conserve durante la inclusión. Sin embargo, después de la inclusión puede ocurrir que la propiedad atributos del espacio de nombres no contenga la lista completa de declaraciones de espacios de nombres necesaria para interpretar los nombres cualificados en el atributo o el contenido de elementos en el resultado. Por lo tanto, no se recomienda que los procesadores XInclude expongan atributos de espacio de nombres en el resultado. Si no hay forma de evitarlo, la implementación puede añadir ítems de información de atributo a la propiedad atributos de espacio de nombres a fin de dar una versión aproximada de la información transmitida por la propiedad espacios de nombres en ámbito.

4.5.5 Ajuste del URI base

La propiedad URI base del conjunto de información adquirido no cambia como resultado de la combinación del conjunto de información y permanece sin cambios luego de dicha combinación. Es decir que las referencias URI relativas en el conjunto de información incluido se resuelven en relación al mismo URI a pesar de estar incluidas en un documento cuyo URI base efectivo puede ser diferente. Para indicar este hecho, al conjunto de información resultado se agregan atributos xml:base.

A cada ítem de información de elemento en los ítems incluidos de nivel superior que tenga un URI base diferente que su padre de inclusión se le agrega un ítem de información de atributo a su propiedad atributos. Este atributo tiene las siguientes propiedades:

  1. Un espacio de nombres igual a http://www.w3.org/XML/1998/namespace.

  2. Un nombre local igual a base.

  3. Un prefijo igual a xml.

  4. Un valor normalizado igual al URI base del elemento, o a una referencia URI equivalente relativa al URI base del padre de inclusión. Las circunstancias en las que es preferible el uso de un URI relativo y el modo de calcularlo dependen de la implementación.

  5. Un indicador especificado que señala que este atributo en realidad fue especificado en la etiqueta de apertura de este elemento.

  6. Un tipo de atributo igual a CDATA.

  7. Una propiedad referencias sin ningún valor.

  8. Un elemento propietario del ítem de información del elemento.

Si ya existe un ítem de información de atributo xml:base, se reemplaza con el nuevo atributo.

4.5.6 Ajuste del lenguaje

Si bien el atributo xml:lang se describe como heredado de XML, la especificación de los conjuntos de información XML no prevé la conservación de la herencia de esta propiedad a través de la composición de documentos, algo que XInclude sí ofrece. Esta sección introduce una propiedad lenguaje que registra el ámbito de la información de xml:lang: a fin de preservarla durante la inclusión.

Un procesador XInclude debería ampliar el conjunto de información de origen y el conjunto de información adquirido agregando la propiedad lenguaje a cada ítem de información de elemento. El valor de esta propiedad es el valor normalizado del atributo xml:lang que aparece en ese elemento, si lo hay; si xml:lang="" la propiedad no contiene ningún valor, de lo contrario es el valor de la propiedad lenguaje del elemento padre del elemento, si existe, de lo contrario la propiedad no contiene ningún valor.

A cada ítem de información de elemento en los ítems incluidos de nivel superior cuyo valor para lenguaje sea diferente al de su padre de inclusión (ignorando la distinción de mayúsculas y minúsculas según [IETF RFC 3066]), o que tenga un valor si su padre de inclusión es un ítem de información de documento, se le agrega un ítem de información de atributo a su propiedad atributos. Este atributo tiene las siguientes propiedades:

  1. Un espacio de nombres igual a http://www.w3.org/XML/1998/namespace.

  2. Un nombre local igual a lang.

  3. Un prefijo igual a xml.

  4. Un valor normalizado igual a la propiedad lenguaje del elemento. Si la propiedad lenguaje no contiene ningún valor, el valor normalizado es la cadena vacía.

  5. Un indicador especificado que señala que este atributo en realidad fue especificado en la etiqueta de apertura de este elemento.

  6. Un tipo de atributo igual a CDATA.

  7. Una propiedad referencias sin ningún valor.

  8. Un elemento propietario del ítem de información del elemento.

Si ya existe un ítem de información de atributo xml:lang, se reemplaza con el nuevo atributo.

Observación:

XInclude no trata de manera especial el atributo xml:space.

4.5.7 Propiedades conservadas por el conjunto de información

Puesto que se trata de una transformación de conjuntos de información, XInclude actúa sobre la estructura lógica de los documentos XML y no sobre su serialización textual. Todas las propiedades de un ítem de información descritas en [XML Information Set] que no sean explícitamente modificadas por esta especificación se conservan durante la inclusión. Las propiedades historia de inclusión y lenguaje introducidas en esta especificación también se conservan. Las propiedades de extensión, tales como las propiedades de Post Schema Validation Infoset (PSVI) de [XML Schemas] se descartan de manera predeterminada. Sin embargo, un procesador XInclude puede (a elección del usuario) conservar estas propiedades en el conjunto de información resultante, si son correctas según la especificación que describe la semántica de las propiedades de extensión.

Por ejemplo, la propiedad PSVI validez describe las condiciones de los ancestros y los descendientes. La modificación de los ancestros y descendientes durante el proceso XInclude puede tornar inexacto el valor de esta propiedad. De manera predeterminada, XInclude elimina esta propiedad, pero el usuario tiene la opción de hacer que la propiedad sea recalculada para obtener un valor semánticamente adecuado. Los detalles exactos respecto de cómo hacer esto quedan fuera del alcance de esta especificación.

5 Conformidad

5.1 Conformidad de marcado

Un ítem de información de elemento es conforme a esta especificación si cumple los requisitos estructurales para los elementos de inclusión definidos en esta especificación. Esta especificación no impone ninguna restricción particular a las DTD o los esquemas XML; la conformidad sólo se aplica a los elementos y los atributos.

5.2 Conformidad de aplicación

Una aplicación es conforme a XInclude si:

La compatibilidad con [XPointer xpointer() Scheme] no es obligatoria para lograr conformidad plena con XInclude. Se avisa a los autores que el uso de xpointer() y otros esquemas XPointer diferentes de element() puede ser incompatible con algunas implementaciones conformes a XInclude.

5.3 Conformidad con conjuntos de información XML

Esta especificación se ajusta a lo descrito en [XML Information Set]. Los siguientes ítems de información deben estar presentes en los conjuntos de información de entrada para que sea posible un procesamiento correcto:

  • Ítems de información de documento con propiedades hijos y URI base.

  • Ítems de información de elemento con propiedades nombre de espacio de nombres, nombre local, hijos, atributos, URI base y padre.

  • Ítems de información de atributo con propiedades nombre de espacio de nombres, nombre local y valor normalizado.

Además, el procesamiento XInclude puede generar los siguientes tipos de ítems de información en el resultado:

  • Ítems de información de carácter con propiedades código de carácter, espacio en blanco en el contenido del elemento y padre.

XInclude extiende el conjunto de información con la propiedad historia de inclusión, que debe aparecer en los siguientes tipos de ítems de información en el resultado:

  • Ítems de información de elemento.

  • Ítems de información de instrucción de procesamiento.

  • Ítems de información de comentario.

  • Ítems de información de carácter.

XInclude también extiende el conjunto de información con la propiedad language, que puedeaparecer en ítems de información de elemento en el resultado.

A Referencias

IETF RFC 2119
RFC 2119: Key words for use in RFCs to Indicate Requirement Levels. Internet Engineering Task Force, 1997. (Véase http://www.ietf.org/rfc/rfc2119.txt.)
IETF RFC 2279
RFC 2279: UTF-8, a transformation format of ISO 10646. Internet Engineering Task Force, 1998. (Véase http://www.ietf.org/rfc/rfc2279.txt.)
IETF RFC 2396
RFC 2396: Uniform Resource Identifiers. Internet Engineering Task Force, 1995. (Véase http://www.ietf.org/rfc/rfc2396.txt.)
IETF RFC 2732
RFC 2732: Format for Literal IPv6 Addresses in URL's. Internet Engineering Task Force, 1999. (Véase http://www.ietf.org/rfc/rfc2732.txt.)
IETF RFC 3023
RFC 3023: XML Media Types. Internet Engineering Task Force, 2001. (Véase http://www.ietf.org/rfc/rfc3023.txt.)
Unicode
The Unicode Consortium. The Unicode Standard, Version 4.0. Reading, Mass.: Addison-Wesley, 2003, y sus actualizaciones periódicas mediante la publicación de nuevas versiones. (En http://www.unicode.org/unicode/standard/versions/ pueden hallarse la última versión y más información sobre las versiones del estándar y de la Base de datos de caracteres Unicode.)
XML 1.0
Tim Bray, Jean Paoli, C.M. Sperberg-McQueen, Eve Maler, François Yergeau, editores. Extensible Markup Language (XML) 1.0 (Third Edition), World Wide Web Consortium, 2004. (Véase 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, editores. Extensible Markup Language (XML) 1.1, World Wide Web Consortium, 2004. (Véase http://www.w3.org/TR/2004/REC-xml11-20040204/.)
XML Base
Jonathan Marsh, editor. XML Base. World Wide Web Consortium, 2001. (Véase http://www.w3.org/TR/2001/REC-xmlbase-20010627/.)
XML Information Set
John Cowan y Richard Tobin, editores. XML Information Set (Second Edition). World Wide Web Consortium, 2004. (Véase http://www.w3.org/TR/2004/REC-xml-infoset-20040204/.)
Namespaces in XML
Tim Bray, Dave Hollander y Andrew Layman, editores. Namespaces in XML. World Wide Web Consortium, 1999. (Véase http://www.w3.org/TR/1999/REC-xml-names-19990114/.)
Namespaces in XML 1.1
Tim Bray, Dave Hollander, Andrew Layman, Richard Tobin, editores. Namespaces in XML 1.1. World Wide Web Consortium, 2004. (Véase http://www.w3.org/TR/2004/REC-xml-names11-20040204/.)
XPointer Framework
Paul Grosso, Eve Maler, Jonathan Marsh, Norman Walsh, editores. XPointer Framework. World Wide Web Consortium, 2003. (Véase http://www.w3.org/TR/2003/REC-xptr-framework-20030325/.)
XPointer element() scheme
Paul Grosso, Eve Maler, Jonathan Marsh, Norman Walsh, editores. XPointer element() Scheme. World Wide Web Consortium, 2003. (Véase http://www.w3.org/TR/2003/REC-xptr-element-20030325/.)

B Referencias (no normativas)

IETF RFC 2616
RFC 2616: Hypertext Transfer Protocol -- HTTP/1.1. Internet Engineering Task Force, 1999. (Véase http://www.ietf.org/rfc/rfc2616.txt.)
IETF RFC 3066
RFC 3066: Tags for the Identification of Languages. Internet Engineering Task Force, 2001. (Véase http://www.ietf.org/rfc/rfc3066.txt.)
XML Inclusion Proposal
Jonathan Marsh, David Orchard, editores. XML Inclusion Proposal (XInclude). World Wide Web Consortium, 2004. (Véase http://www.w3.org/TR/1999/NOTE-xinclude-19991123.)
XML Linking Language
Steve DeRose, Eve Maler, David Orchard y Ben Trafford, editores. XML Linking Language (XLink). World Wide Web Consortium, 2001. (Véase http://www.w3.org/TR/2001/REC-xlink-20010627/.)
XPointer xpointer() Scheme
Steve DeRose, Ron Daniel, Eve Maler, editores. XPointer xpointer() Scheme. World Wide Web Consortium, 2002. (Véase http://www.w3.org/TR/2002/WD-xptr-xpointer-20021219/.)
XPath 1.0
James Clark, Steve DeRose, editores. XML Path Language (XPath) Version 1.0. World Wide Web Consortium, 1999. (Véase http://www.w3.org/TR/1999/REC-xpath-19991116.)
IRI draft
Internationalized Resource Identifiers (IRIs). (Véase http://www.ietf.org/internet-drafts/draft-duerst-iri-11.txt.)
Character Model
Martin J. Dürst, François Yergeau, Misha Wolf, Asmus Freytag, Tex Texin. Character Model for the World Wide Web 1.0: Normalization. World Wide Web Consortium, 2001. (Véase http://www.w3.org/TR/charmod-norm/.)
XML Schemas
Henry S. Thompson, David Beech, Murray Maloney, Noah Mendelsohn, editores. XML Schema Part 1: Structures. World Wide Web Consortium, 2001. (Véase http://www.w3.org/TR/2001/REC-xmlschema-1-20010502/.)
XSL-FO
Sharon Adler et al. Extensible Stylesheet Language (XSL). World Wide Web Consortium, 2001. (Véase http://www.w3.org/TR/2001/REC-xsl-20011015/.)
XHTML
Steven Pemberton et al. XHTML 1.0 The Extensible HyperText Markup Language (Second Edition). World Wide Web Consortium, 2002. (Véase http://www.w3.org/TR/2002/REC-xhtml1-20020801/.)

C Ejemplos (no normativos)

C.1 Ejemplo de inclusión básica

El siguiente documento XML contiene un elemento xi:include que apunta a un documento externo. Supongamos que el URI base de este documento es http://www.example.org/document.xml.

<?xml version='1.0'?>

<document xmlns:xi="http://www.w3.org/2001/XInclude">
  <p>120 Mz es adecuado para el usuario doméstico medio.</p>
  <xi:include href="disclaimer.xml"/>
</document>

disclaimer.xml contiene:

<?xml version='1.0'?>
<disclaimer>
  <p>Las opiniones aquí presentadas son de quien las expresa
  y no deben interpretarse como política oficial de esta
  organización.</p>
</disclaimer>

El conjunto de información resultante de la resolución de las inclusiones es el mismo (salvo por las propiedades historia de inclusión y lenguaje) que el del documento siguiente:

<?xml version='1.0'?>
<document xmlns:xi="http://www.w3.org/2001/XInclude">
  <p>120 Mz es adecuado para el usuario doméstico medio.</p>
  <disclaimer xml:base="http://www.example.org/disclaimer.xml">
  <p>Las opiniones aquí presentadas son individuales
  y no deben interpretarse como política oficial de esta
  organización.</p>

</disclaimer>
</document>

C.2 Ejemplo de inclusión textual

El siguiente documento XML incluye un "ejemplo operativo" en un documento.

<?xml version='1.0'?>
<document xmlns:xi="http://www.w3.org/2001/XInclude">

  <p>Este documento fue leído
  <xi:include href="count.txt" parse="text"/> veces.</p>
</document>

donde count.txt contiene:

324387

El conjunto de información resultante de la resolución de las inclusiones es el mismo (salvo por las propiedades historia de inclusión y lenguaje) que el del documento siguiente:

<?xml version='1.0'?>
<document xmlns:xi="http://www.w3.org/2001/XInclude">

  <p>Este documento fue leído
  324387 veces.</p>
</document>

C.3 Ejemplo de inclusión textual de XML

El siguiente documento XML incluye un "ejemplo operativo" en un documento.

<?xml version='1.0'?>
<document xmlns:xi="http://www.w3.org/2001/XInclude">
  <p>Lo que sigue es el código fuente del recurso "data.xml":</p>
  <example><xi:include href="data.xml" parse="text"/></example>

</document>

data.xml contiene:

<?xml version='1.0'?>
<data>
  <item><![CDATA[Brooks & Shields]]></item>
</data>

El conjunto de información resultante de la resolución de las inclusiones es el mismo (salvo por las propiedades historia de inclusión y lenguaje) que el del documento siguiente:

<?xml version='1.0'?>
<document xmlns:xi="http://www.w3.org/2001/XInclude">
  <p>Lo que sigue es el código fuente del recurso "data.xml":</p>

  <example><?xml version='1.0'?>
<data>
  <item><![CDATA[Brooks & Shields]]></item>
</data></example>
</document>

C.4 Ejemplo de inclusión de fragmento

El siguiente ejemplo muestra el resultado de incluir fragmentos de otro documento XML. Supongamos que el URI base del documento es 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 hace referencia a una DTD que declara el atributo id con el tipo ID y contiene:

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

El conjunto de información resultante de la resolución de las inclusiones es el mismo (salvo por las propiedades historia de inclusión y lenguaje) que el del documento siguiente:

<?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 Ejemplo de inclusión de rango

El siguiente ejemplo muestra el resultado de incluir un rango indicado por un XPointer. Supongamos que el URI base del documento es http://www.example.com/document.xml.

<?xml version='1.0'?>

<document>
  <p>El pasaje en cuestión es:</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 contiene:

<chapter>
  <p>Sentence 1.  Sentence 2.</p>
  <p><i>Sentence 3.  Sentence 4.</i>  Sentence 5.</p>

</chapter>

El conjunto de información resultante de la resolución de las inclusiones es el mismo (salvo por las propiedades historia de inclusión y lenguaje) que el del documento siguiente:

<?xml version='1.0'?>
<document>
  <p>El pasaje en cuestión es:</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 Ejemplo de recuperación ante errores

El siguiente documento XML depende del mecanismo de recuperación ante errores para el caso de que los recursos example.txt y fallback-example.txt no estén disponibles.

<?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">Informar error</a></xi:fallback>
	  </xi:include></xi:fallback>
  </xi:include>
</div>

Si ni example.txt ni fallback-example.txt están disponibles, el conjunto de información resultante de la resolución de las inclusiones es el mismo (salvo por las propiedades historia de inclusión y lenguaje) que el del documento siguiente:

<?xml version='1.0'?>
<div>
  <a href="mailto:bob@example.org">Informar error</a>
</div>