07 April 2004

Apéndice C: Mapa Infoset

Editor:
Philippe Le Hégaret, W3C

Tabla de contenidos

Nota del Traductor: Infoset es un conjunto de interfaces de programas abstractas que modelan la información en XML. En los modelos DOM el Infoset se muestra a través de una jerarquía de nodos genéricos que soportan interfaces bien definidas.

Este apéndice contiene el mapeo entre el modelo del Conjunto de Información XML [Conjunto de Información XML] y el Modelo de Objetos del Documento. Empezando desde un nodo Document, cuyo elemento información es mapeado hasta su respectivo Node, y cuyo Node es mapeado hasta su respectivo elemento de información. Como usado en la especificación Infoset, los nombres de la propiedad Infoset son mostrados entre corchetes, [así].

a no ser que no es especifique, el mapa del Infoset del nodo DOM no hace distintición entre desconocido y sin valor ya que ambos serán expuestos como null (o false si el atributo DOM attribute es del tipo boolean).

C.1 Mapa del Nodo Document

C.1.1 De Infoset al Nodo Document

Un elemento de información del documento traza un mapa a un nodo Document. Los atributos del nodo Document correspondientes son construidos como sigue:

Atributo Valor
Node.nodeName "#document"
Node.nodeValue null
Node.nodeType Node.DOCUMENT_NODE
Node.parentNode null
Node.childNodes Un NodeList contiene el elemento de información en la propiedad [children].
Node.firstChild El primer nodo contenido en Node.childNodes
Node.lastChild El último nodo contenido en Node.childNodes
Node.previousSibling null
Node.nextSibling null
Node.attributes null
Node.ownerDocument null
Node.namespaceURI null
Node.prefix null
Node.localName null
Node.baseURI Igual que Document.documentURI
Node.textContent null
Document.doctype El elemento de información del tipo de documento
Document.implementation El objeto DOMImplementation usado para crear este nodo
Document.documentElement La propiedad [document element]
Document.inputEncoding La propiedad [character encoding scheme]
Document.xmlEncoding null
Document.xmlStandalone La propiedad [standalone], o false si el último no tiene valor.
Document.xmlVersion La propiedad [version], o "1.0" si el último no tiene valor.
Document.strictErrorChecking true
Document.documentURI La propiedad [base URI]
Document.domConfig Un objeto DOMConfiguration cuyos parámetros son establecidos a sus valores por defecto

Las propiedades [notations], [unparsed entities] son expuestas en el nodo DocumentType.

Nota: La propiedad [all declarations processed] no es expuesta directamente por el nodo Document.

C.1.2 Del Nodo Document a Infoset

Un nodo Document traza un mapa a un elemento de información del documento. Los nodos Document sin URI de espacio de nombre (Node.namespaceURI iguales a null) no puede ser representados usando el Infoset. Las propiedades del elemento de información del documento correspondientes son construidos como sigue:

Propiedad Valor
[children] Node.childNodes
[document element] Document.documentElement
[notations] Document.doctype.notations
[unparsed entities] El elemento de información de Document.doctype.entities, cuyo Node.childNodes es una lista vacía
[base URI] Document.documentURI
[character encoding scheme] Document.inputEncoding
[standalone] Document.xmlStandalone
[version] Document.xmlVersion
[all declarations processed] El valor depende de la implementación

C.2 Mapa del Nodo Element

C.2.1 De Infoset al Nodo Element

Un elemento de información de elemento traza un mapa a un nodo Element. Los atributos correspondientes al nodo Element son construidos como sigue:

Atributo Valor
Node.nodeName Igual que Element.tagName
Node.nodeValue null
Node.nodeType Node.ELEMENT_NODE
Node.parentNode La propiedad [parent]
Node.childNodes Un NodeList contiene el elemento de información en la propiedad [children]
Node.firstChild El primer nodo contenido en Node.childNodes
Node.lastChild El último nodo contenido en Node.childNodes
Node.previousSibling El elemento de información que precede al actual en la propiedad [children] contenida en la propiedad [parent]
Node.nextSibling El elemento de información siguiente al actual en la propiedad [children] contenida en una propiedad [parent]
Node.attributes El elemento de información contenido en las propiedades [attributes] y [namespace attributes]
Node.ownerDocument El elemento de información del documento
Node.namespaceURI La propiedad [namespace name]
Node.prefix La [prefix] propiedad
Node.localName La propiedad [local name]
Node.baseURI La propiedad [base URI]
Node.textContent La concatenación del valor del atributo Node.textContent de cada nodo hijo, excluyendo los nodos COMMENT_NODE y PROCESSING_INSTRUCTION_NODE nodes. Esto es una cadena vacía si el nodo no tiene hijos.
Element.tagName Si la propiedad [prefix] no tiene valor, esta contiene la propiedad [local name]. En caso contrario, esta contiene la concatenaci&ocute;n de la propiedad [prefix], el caracter dos puntos ':', y la propiedad [local name].
Element.schemaTypeInfo Un objeto TypeInfo cuyo TypeInfo.typeNamespace y TypeInfo.typeName son deducidos del esquema en uso si es válido

Nota: La propiedad [in-scope namespaces] no es expuesta directamente por el nodo Element.

C.2.2 Del Nodo Element a Infoset

Un nodo Element traza un mapa a un elemento de información del elemento. Como Infoset representa solamente referencias de entidades no expandidas/ampliadas, los nodos EntityReference no vacíos contenidos en Node.childNodes necesitan ser reemplazados por su contenido. Las aplicaciones DOM podrán usar el método Document.normalizeDocument() para tal efecto con el parámetro "entities" establecido a false. Las propiedades correspondientes a elemento de información del elemento son construidas como siguen:

Propiedad Valor
[namespace name] Node.namespaceURI
[local name] Node.localName
[prefix] Node.prefix
[children] Node.childNodes, cuyas referencias de entidad expandidas/ampliadas (nodos EntityReference con hijos) han sido reemplazadas con su contenido..
[attributes] Los nodos contenidos en Node.attributes, cuyo valor de Node.namespaceURI es diferente de "http://www.w3.org/2000/xmlns/"
[namespace attributes] Los nodos contenidos en Node.attributes, cuyo valor de Node.namespaceURI es "http://www.w3.org/2000/xmlns/"
[in-scope namespaces] Los elementos de Información de espacio de nombre procesados usando las propiedades [namespace attributes] de este nodo y su antecesor. Si el módulo [DOM Nivel 3 XPath] es soportado, los elementos de información de espacio de nombre pueden ser también procesados desde los nodos XPathNamespace.
[base URI] Node.baseURI
[parent] Node.parentNode

C.3 Mapa del Nodo Attr

C.3.1 De Infoset al Nodo Attr

Un elemento de información de atributo traza un mapa a un nodo Attr. Los atributos del nodo Attr correspondientes son construidos como sigue:

Atributo/Método Valor
Node.nodeName igual que Attr.name
Node.nodeValue igual que Attr.value
Node.nodeType Node.ATTRIBUTE_NODE
Node.parentNode null
Node.childNodes Un NodeList que contiene un nodo Text cuyo contenido de texto es igual que Attr.value.
Node.firstChild El primer nodo Text contenido en Node.childNodes
Node.lastChild El último nodo Text contenido en Node.childNodes
Node.previousSibling null
Node.nextSibling null
Node.attributes null
Node.ownerDocument El elemento de información del documento
Node.namespaceURI La propiedad [namespace name]
Node.prefix La propiedad [prefix]
Node.localName La propiedad [local name]
Node.baseURI null
Node.textContent el valor de Node.textContent del Text hijo. Igual que Node.nodeValue (desde este nodo atributo contiene solamente un nodo Text node)
Attr.name Si la propiedad [prefix] no tiene valor, esta contiene la propiedad [local name]. En caso contrario, esta contiene la concatenación de la propiedad [prefix], el caracter dos puntos ':', y la propiedad [local name].
Attr.specified La propiedad [specified]
Attr.value La propiedad [normalized value]
Attr.ownerElement La propiedad [owner element]
Attr.schemaTypeInfo Un objeto TypeInfo cuyo TypeInfo.typeNamespace es "http://www.w3.org/TR/REC-xml" y TypeInfo.typeName es la propiedad [attribute type]
Attr.isId Si la propiedad [attribute type] es ID, este método devuelve true

C.3.2 Del Nodo Attr a Infoset

Un nodo Attr traza un mapa a un elemento de información de atributo. Los nodos Attr sin URI de espacio de nombre(Node.namespaceURI iguales a null) no puede ser representados usando el Infoset. Las propiedades del elemento de información del atributo correspondiente son construidoas como sigue:

Propiedad Valor
[namespace name] Node.namespaceURI
[local name] Node.localName
[prefix] Node.prefix
[normalized value] Attr.value
[specified] Attr.specified
[attribute type] Usando el objeto TypeInfo referenciado desde Attr.schemaTypeInfo, el valor de TypeInfo.typeName si TypeInfo.typeNamespace es "http://www.w3.org/TR/REC-xml".
[references] Si la propiedad [attribute type] procesada es IDREF, IDREFS, ENTITY, ENTITIES, o NOTATION, el valor de esta propiedad es una lista ordenada de elementos, de entidades sin analizar, o elementos de información de notaciones enviadas al valor del atributo, en el orden en que estas aparecen aquí. La lista ordenada es procesada usando Node.ownerDocument.getElementById, Node.ownerDocument.doctype.entities, y Node.ownerDocument.doctype.notations.
[owner element] Attr.ownerElement

C.4 Mapa del Nodo ProcessingInstruction

C.4.1 De Infoset al Nodo ProcessingInstruction

Un elemento de informació de instrucción de procesado traza un mapa a un nodo ProcessingInstruction. Los atributos del nodo ProcessingInstruction correspondiente son construidos como sigue:

Atributo Valor
Node.nodeName igual que ProcessingInstruction.target
Node.nodeValue igual que ProcessingInstruction.data
Node.nodeType Node.PROCESSING_INSTRUCTION_NODE
Node.parentNode La [parent] propiedad
Node.childNodes NodeList vacía
Node.firstChild null
Node.lastChild null
Node.previousSibling null
Node.nextSibling null
Node.attributes null
Node.ownerDocument El elemento de información del documento
Node.namespaceURI null
Node.prefix null
Node.localName null
Node.baseURI La propiedad [base URI] del elemento padre si hay alguno. La propiedad [base URI] del elemento de información de la instrucción de procesado no es expuesta en el nodo ProcessingInstruction.
Node.textContent igual que Node.nodeValue
ProcessingInstruction.target La propiedad [target]
ProcessingInstruction.data La propiedad [content]

C.4.2 Del Nodo ProcessingInstruction a Infoset

Un nodo ProcessingInstruction traza un mapa a un elemento de información de instrucción de procesado. Las propiedades del elemento de información de instrucción de procesado correspondientes son construidas como sigue:

Propiedad Valor
[target] ProcessingInstruction.target
[content] ProcessingInstruction.data
[base URI] Node.baseURI (que es equivalente al URI base de su elemento padre si lo hay)
[notation] El nodo Notation llamado por el objetivo/destino y si está disponible desde Node.ownerDocument.doctype.notations
[parent] Node.parentNode

C.5 Mapa del Nodo EntityReference

C.5.1 De Infoset al Nodo EntityReference

Un elemento de información de referencia de entidad no expandida/ampliada traza un mapa a un nodo EntityReference. Los atributos del nodo EntityReference correspondiente son construidos como sigue:

Atributo Valor
Node.nodeName La [name] propiedad
Node.nodeValue null
Node.nodeType Node.ENTITY_REFERENCE_NODE
Node.parentNode La propiedad [parent]
Node.childNodes NodeList vacía
Node.firstChild null
Node.lastChild null
Node.previousSibling null
Node.nextSibling null
Node.attributes null
Node.ownerDocument El elemento de información del documento
Node.namespaceURI null
Node.prefix null
Node.localName null
Node.baseURI La propiedad [declaration base URI]
Node.textContent null (el nodo no tiene hijos)

Nota: Las propiedades [system identifier] y [public identifier] no son expuestas en el nodo EntityReference, pero por el nodo Entity referencia de este nodo EntityReference, si lo hay.

C.5.2 Del Nodo EntityReference a Infoset

Un nodo EntityReference traza un mapa a un elemento de información de referencia de entidad no expandida/ampliada. Los nodos EntityReference con hijos (Node.childNodes contie una lista no vacía) no pueden ser representados utilizando el Infoset. Las propiedades del elemento de información de referencia de entidad no expandida/ampliada correspondiente son construidas como sigue:

Propiedad Valor
[name] Node.nodeName
[system identifier] El valor de Entity.systemId del nodo Entity disponible desde Node.ownerDocument.doctype.entities si está disponible
[public identifier] El valor de Entity.publicId del nodo Entity disponible desde Node.ownerDocument.doctype.entities si está disponible
[declaration base URI] Node.baseURI
[parent] Node.parentNode

C.6 Mapa de los Nodos Text y CDATASection

Desde el [Conjunto de Información XML] no se representan los límites de la sección marcada CDATA, los nodos CDATASection no pueden darse de un mapa infoset.

C.6.1 De Infoset al Nodo Text

Los elementos de información de caracteres consecutivos trazan un mapa a un nodo Text. Los atributos del nodo Text correspondiente son construidos como sigue:

Atributo/Método Valor
Node.nodeName "#text"
Node.nodeValue igual que CharacterData.data
Node.nodeType Node.TEXT_NODE
Node.parentNode La propiedad [parent]
Node.childNodes NodeList vacía
Node.firstChild null
Node.lastChild null
Node.previousSibling null
Node.nextSibling null
Node.attributes null
Node.ownerDocument El elemento de información del documento
Node.namespaceURI null
Node.prefix null
Node.localName null
Node.baseURI null
Node.textContent igual que Node.nodeValue
CharacterData.data Un DOMString incluyendo todos los [character code] contenidos en los elementos de información de caracteres
CharacterData.length El número de unidades de 16-bit necesario para codificar todos los códigos de caracteres ISO 10646 contenidos en los elementos de información de caracteres usando la codificación UTF-16.
Text.isElementContentWhitespace La propiedad [element content whitespace]
Text.wholeText igual que CharacterData.data

Nota: Para la construcción, los valores de las propiedades [parent] y [element content whitespace] son necesariamente los mismos que para todos los elementos de información de caracteres consecutivos.

C.6.2 De los Nodos Text y CDATASection a Infoset

El contenido de texto de un nodo Text o un nodo CDATASection traza un mapa a una secuencia de elementos de información de caracteres. El número de elementos es menor o igual a CharacterData.length. Los nodos Textos contenidos en nodos Attr son mapeados al Infoset del atributo Attr.value. Los nodosTextos contenidos en nodos Document no pueden ser representados usando el Infoset. Las propiedades correspondientes a elementos de información de caracteres son construidas como sigue:

Propiedad Valor
[character code] Los códigos de caracteres ISO 10646 producidos usando uno o dos unidades de 16-bit de CharacterData.data
[element content whitespace] Text.isElementContentWhitespace
[parent] Node.parentNode

C.7 Mapa del Nodo Comment

C.7.1 De Infoset al Nodo Comment

Un elemento de información del contenido traza un mapa a un nodo Comment. Los atributos del Comment correspondiente son construidos como sigue:

Atributo Valor
Node.nodeName "#comment"
Node.nodeValue igual que CharacterData.data
Node.nodeType Node.COMMENT_NODE
Node.parentNode El parámetro [parent]
Node.childNodes NodeList vacía
Node.firstChild null
Node.lastChild null
Node.previousSibling null
Node.nextSibling null
Node.attributes null
Node.ownerDocument El elemento de información del documento
Node.namespaceURI null
Node.prefix null
Node.localName null
Node.baseURI null
Node.textContent igual que Node.nodeValue
CharacterData.data La propiedad [content] codificada usando la codificación UTF-16.
CharacterData.length El número de unidades de 16-bit necesarias para codificar todos los códigos de caracteres ISO contenidos en la propiedad [content] usando la codificación UTF-16.

C.7.2 Del Nodo Comment Node a Infoset

Un nodo Comment traza un mapa a un elemento de información de comentario. Las propiedades del elemento de información del comentario correspondiente son construidias como sigue:

Propiedad Valor
[content] CharacterData.data
[parent] Node.parentNode

C.8 Mapa del Nodo DocumentType

C.8.1 De Infoset al Nodo DocumentType

Un elemento de información de la declaración del tipo de documento traza un mapa al nodo DocumentType. Los atributos del nodo DocumentType correspondiente son construidos como sigue:

Atributo Valor
Node.nodeName igual que DocumentType.name
Node.nodeValue null
Node.nodeType Node.DOCUMENT_TYPE_NODE
Node.parentNode El parámetro [parent]
Node.childNodes NodeList vacío
Node.firstChild null
Node.lastChild null
Node.previousSibling null
Node.nextSibling null
Node.attributes null
Node.ownerDocument El elemento de información del documento
Node.namespaceURI null
Node.prefix null
Node.localName null
Node.baseURI null
Node.textContent null
DocumentType.name El nombre del elemento del documento.
DocumentType.entities La propiedad [unparsed entities] disponible desde el elemento de información del documento.
DocumentType.notations La propiedad [notations] disponible desde el elemento de información del documento.
DocumentType.publicId La propiedad [public identifier]
DocumentType.systemId La propiedad [system identifier]
DocumentType.internalSubset El valor depende de la implementación

Nota: La propiedad [children] no es expuesta directamente por el nodo DocumentType.

C.8.2 Del Nodo DocumentType a Infoset

Un nodo DocumentType traza un mapa a un elemento de información de declaración del tipo de documento. Las propiedades del elemento de información de declaración del tipo de documento correspondiente son construidas como sigue:

Propiedad Valor
[system identifier] DocumentType.systemId
[public identifier] DocumentType.publicId
[children] El valor de esta propiedad depende de la implementación
[parent] Node.parentNode

C.9 Mapa del Nodo Entity

C.9.1 De Infoset al Nodo Entity

Un elemento de información de entidad no analizada traza un mapa a un nodo Entity. Los atributos del nodo Entity correspondiente son construidos como sigue:

Atributo Valor
Node.nodeName La propiedad [name]
Node.nodeValue null
Node.nodeType Node.ENTITY_NODE
Node.parentNode null
Node.childNodes NodeList vacía
Node.firstChild null
Node.lastChild null
Node.previousSibling null
Node.nextSibling null
Node.attributes null
Node.ownerDocument El elemento de información del documento
Node.namespaceURI null
Node.prefix null
Node.localName null
Node.baseURI La propiedad [declaration base URI]
Node.textContent "" (el nodo no tiene hijos)
Entity.publicId La propiedad [public identifier]
Entity.systemId La propiedad [system identifier]
Entity.notationName La propiedad [notation name]
Entity.inputEncoding null
Entity.xmlEncoding null
Entity.xmlVersion null

Nota: La propiedad [notation] está disponible directamente en el nodo DocumentType.

C.9.2 Del Nodo Entity a Infoset

Un nodo Entity traza un mapa a un elemento de información de entidad no analizada. Los nodos Entity con hijos (Node.childNodes contiene una lista no vacía) no pueden ser representados usando el Infoset. Las propiedades del elemento de información de entidad no analizada correspondiente son construidas como sigue:

Propiedad Valor
[name] Node.nodeName
[system identifier] Entity.systemId
[public identifier] Entity.publicId
[declaration base URI] Node.baseURI
[notation name] Entity.notationName
[notation] El nodo Notation referendiado desde DocumentType.notations cuyo nombre es la propiedad [notation name]

C.10 Mapa del Nodo Notation

C.10.1 De Infoset al Nodo Notation

Un elemento de información de notación traza un mapa a un nodo Notation. Los atributos del nodo Notation correspondientes son construidos como sigue:

Atributo Valor
Node.nodeName La propiedad [name]
Node.nodeValue null
Node.nodeType Node.NOTATION_NODE
Node.parentNode null
Node.childNodes NodeList vacío
Node.firstChild null
Node.lastChild null
Node.previousSibling null
Node.nextSibling null
Node.attributes null
Node.ownerDocument El elemento de información del documento
Node.namespaceURI null
Node.prefix null
Node.localName null
Node.baseURI La propiedad [declaration base URI]
Node.textContent null
Notation.publicId La propiedad [public identifier]
Notation.systemId La propiedad [system identifier]

C.10.2 Del Nodo Notation a Infoset

Un nodo Notation traza un mapa a un elemento de información de notación. Las propiedades del elemento de información de notación correspondiente son construidas como sigue:

Propiedad Valor
[name] Node.nodeName
[system identifier] Notation.systemId
[public identifier] Notation.publicId
[parent] Node.parentNode