Importante:
Este documento es una traducción al castellano de la Recomendación del W3C "Namespaces in XML", publicada el 14 de enero de 1999.
Esta traducción ha sido publicada el 17 de agosto de 2001.
El URI de este documento es http://html.conclase.net/w3c/xml-names-es/Overview.html
El URI del documento original es http://www.w3.org/TR/1999/REC-xml-names-19990114
El URI de la última versión de la Recomendación en inglés es http://www.w3.org/TR/REC-xml-names
La única versión normativa de este documento es la versión original en inglés que se encuentra en el sitio web del W3C. Ninguna parte del presente documento en castellano es normativa aunque se especifique lo contrario.
Véase el Aviso de Copyright al final de este documento.
Este documento puede contener errores de traducción.
La traducción ha sido realizada por Juan R. Pozo.
Formatos disponibles de la traducción:
http://html.conclase.net/w3c/xml-names-es/ http://html.conclase.net/w3c/xml-names-es/xml-names-es.xml http://html.conclase.net/w3c/xml-names-es/Overview.htmlCopyright © 1999 W3C® (MIT, INRIA, Keio), Todos los Derechos Reservados. Se aplican todas las condiciones de responsabilidad, marcas comerciales, uso de documentos, y licencias de software del W3C.
Los espacios de nombres XML proporcionan un método simple para cualificar nombres de elementos y atributos usados en el Lenguaje Extensible para el Formato de Documentos (Extensible Markup Language) asociándolos con espacios de nombres identificados por referencias URI.
Este documento ha sido revisado por Miembros del W3C y otras partes interesadas y ha sido aprobado por el Director como Recomendación del W3C. Es un documento estable y puede ser usado como material de referencia o citado como referencia normativa en otros documentos. La intención del W3C al hacer esta Recomendación es llamar la atención sobre la especificación y promover su difusión general. Esto impulsa la funcionalidad y la interoperabilidad de la Web.
La lista de errores conocidos de la versión original en inglés de esta especificación está disponible en http://www.w3.org/XML/xml-names-19990114-errata.
Le rogamos informe de errores en la versión original en inglés de este documento a xml-names-editor@w3.org.
N.T.: La correción de estas erratas ya ha sido tenida en cuenta en la traducción al castellano del documento. Para informar sobre errores presentes en la traducción española de la especificación, puede ponerse en contacto con el traductor en jrpozo arroba conclase punto net. Gracias por su colaboración.
1 Motivación y Sumario
1.1 Un Comentario sobre la Notación y el Uso
2 Declaración de Espacios de Nombres
3 Nombres Cualificados
4 Utilización de Nombres Cualificados
5 Aplicación de Espacios de Nombres a Elementos y Atributos
5.1 Ambito de Aplicación de los Espacios de Nombres
5.2 Espacios de Nombres por Defecto
5.3 Unicidad de Atributos
6 Conformidad de Documentos
A La Estructura Interna de los Espacios de Nombres XML (No Normativo)
A.1 La Insuficiencia del Espacio de Nombres Tradicional
A.2 Particiones de Espacios de Nombres XML
A.3 Nombres de Atributo y de Tipos de Elemento Expandidos
A.4 Nombres de Atributos Expandidos Unicos
B Agradecimientos (No Normativo)
C Referencias (No Normativo)
Nos imaginamos aplicaciones del Lenguaje XML en las que un solo documento XML puede contener elementos y atributos (a los que aquí se hace referencia como "vocabulario de formato") que están definidos para y son usados por distintos módulos de software. Una de las motivaciones es la modularidad; si existe un vocabulario de formato bien entendido y para el cual hay programas útiles disponibles, es mejor reutilizar este vocabulario y no reinventarlo.
Tales documentos, que contiene varios vocabularios de formato, plantean problemas de reconocimiento y colisión. Los módulos de software tienen que ser capaces de reconocer las etiquetas y atributos para cuyo procesamiento fueron diseñados, incluso si se producen "colisiones" cuando un código de formato destinado a algún otro paquete de software usa el mismo nombre de atributo o de tipo de elemento.
Estas consideraciones exigen que las estructuras de los documentos deban tener nombres universales, cuyo ámbito de aplicación se extienda más allá del documento que las contiene. Esta especificación describe un mecanismo, los espacios de nombres XML, que lleva esto a cabo.
[Definición: Un espacio de nombres XML es un conjunto de nombres, identificados por una referencia URI [RFC2396], que se utilizan en documentos XML como tipos de elemento y nombres de atributo. ] Los espacios de nombres XML difieren de los "espacios de nombres" usados convencionalmente en las disciplinas de programación en que la versión XML tiene estructura interna y no es, matemáticamente hablando, un conjunto. Estos aspectos se tratan con más profundidad en A La Estructura Interna de los Espacios de Nombres XML.
[Definición: Se considera que las referencias URI que identifican espacios de nombres son idénticas cuando son exactamente las mismas carácter por carácter.] Obsérvese que las referencias URI que no sean idénticas en este sentido pueden ser de hecho funcionalmente equivalentes. Por ejemplo, referencias URI que sólo difieren en mayúsculas/minúsculas, o que están en entidades externas que tengan URIs base efectivos distintos.
Los nombres de los espacios de nombres XML pueden aparecer como nombres cualificados, que contienen un símbolo de dos puntos (:) que divide al nombre en un prefijo del espacio de nombres y una parte local. El prefijo, que corresponde a la referencia URI, selecciona un espacio de nombres. La combinación del espacio de nombres URI gestionado universalmente y del espacio de nombres propio del documento produce identificadores que son únicos a nivel universal. Se proporcionan mecanismos para definir el ámbito de los prefijos y los valores por defecto.
Las referencias URI pueden contener caracteres no permitidos en nombres, de modo que no pueden utilizarse directamente como prefijos de espacios de nombres. Por tanto, el prefijo de espacio de nombres actúa como intermediario de una referencia URI. Se utiliza una sintaxis tipo atributo, descrita más adelante, para declarar la asociación del prefijo de espacio de nombres con una referencia URI; los programas que soporten esta propuesta de espacios de nombres deben reconocer y estar de acuerdo con estas declaraciones y prefijos.
Obsérvese que muchos de los símbolos no terminales de las producciones de esta especificación no están definidos aquí, sino en la especificación XML [XML]. Cuando los símbolos no terminales aquí definidos tienen los mismos nombres que otros símbolos no terminales definidos en la especificación XML, las producciones de esta especificación corresponden en todos los casos a un subconjunto de las cadenas emparejadas por las producciones correspondientes de la especificación XML.
En las producciones de este documento, el código REN
es una Restricción sobre el Espacio de Nombres, una de las reglas que
deben seguir los documentos conformes con esta especificación.
Obsérvese que todos los nombres de dominio de Internet usados en
los ejemplos, con la excepción de w3.org
, se han
elegido aleatoriamente y no debería dárseles mayor importancia.
[Definición: Un espacio de nombres se declara usando una familia de atributos reservados. El nombre de tales atributos debe o bien ser xmlns, o bien tener xmlns: como prefijo. Estos atributos, como cualquier otro atributo XML, se pueden proporcionar directamente o pueden tener un valor por defecto. ]
[1] | NSAttName | ::= | PrefixedAttName |
|
| DefaultAttName |
||||
[2] | PrefixedAttName | ::= | 'xmlns:' NCName | [ REN: "XML" inicial ] |
[3] | DefaultAttName | ::= | 'xmlns' |
|
[4] | NCName | ::= | (Letter | '_')
(NCNameChar)* | /* Un Name XML, menos los ":" */ |
[5] | NCNameChar | ::= | Letter
| Digit
| '.' | '-' | '_'
| CombiningChar
| Extender |
[Definición: El valor de atributo, una referencia URI, es el nombre del espacio de nombres que identifica al espacio de nombres.] El nombre del espacio de nombres, para servir a la finalidad deseada, debería tener las características de unicidad y persistencia. El objetivo no es que sea directamente usable para la obtención de un esquema (si es que existe). Un ejemplo de una sintaxis diseñada con estos fines en mente es la de los Nombres Uniformes de Recursos [RFC2141]. Sin embargo, debería tenerse en cuenta que los URLs ordinarios pueden utilizarse de modo tal que se alcancen estos mismos objetivos.
[Definición: Si el nombre de atributo concuerda con PrefixedAttName, entonces el NCName da el prefijo del espacio de nombres, usado para asociar nombres de elementos y atributos con el nombre del espacio de nombres dado por el valor del atributo en el ámbito del elemento al cual está ligada la declaración.] En tales declaraciones, el nombre del espacio de nombres no puede estar vacío.
[Definición: Si el nombre del atributo concuerda con DefaultAttName, entonces el nombre del espacio de nombres dado por el valor del atributo es aquél del espacio de nombres por defecto en el ámbito del elemento al cual está ligada la declaración.] En tal declaración por defecto, el valor del atributo puede estar vacío. En 5 Aplicación de Espacios de Nombres a Elementos y Atributos se habla de los espacios de nombres por defecto y de la anulación de declaraciones.
Un ejemplo de declaración de espacio de nombres, que asocia el prefijo
de espacio de nombres edi con el nombre de espacio de nombres
http://ecommerce.org/schema
:
<x xmlns:edi='http://ecommerce.org/schema'> <!-- el prefijo "edi" está ligado a http://ecommerce.org/schema para el elemento "x" y sus contenidos --> </x> |
Los prefijos que comiencen con la secuencia de tres letras
x
, m
, l
, en cualquier
combinación de mayúsculas y minúsculas, están reservados para
su uso por las especificaciones de XML y las relacionadas con
ellas.
[Definición: En los documentos XML conformes con esta especificación, algunos nombres (construcciones correspondientes al símbolo no terminal Name) pueden estar dados como nombres cualificados, según se define a continuación:]
[6] | QName | ::= |
(Prefix ':')?
LocalPart |
[7] | Prefix | ::= | NCName |
[8] | LocalPart | ::= | NCName |
El Prefix (prefijo) proporciona la parte del prefijo del espacio de nombres del nombre cualificado, y debe estar asociado mediante una referencia URI a un espacio de nombres en una declaración de espacio de nombres. [Definición: LocalPart proporciona la parte local del nombre cualificado.]
Obsérvese que el prefijo actúa únicamente como sustituto del nombre del espacio de nombres. Las aplicaciones deberían usar el nombre del espacio de nombres, y no el prefijo, al construir nombres cuyo ámbito de aplicación vaya más allá del documento que lo contiene.
En documentos XML conformes con esta especificación, los tipos de elemento se dan como nombres cualificados, según se describe a continuación:
[9] | STag | ::= | '<' QName
(S
Attribute)*
S? '>'
| [ REN: Prefijo Declarado ] |
[10] | ETag | ::= | '</' QName
S? '>' | [ REN: Prefijo Declarado ] |
[11] | EmptyElemTag | ::= | '<' QName
(S
Attribute)*
S? '/>' | [ REN: Prefijo Declarado ] |
Un ejemplo de nombre cualificado que funciona como tipo de elemento:
<x xmlns:edi='http://ecommerce.org/schema'> <!-- el espacio de nombres del elemento 'price' es http://ecommerce.org/schema --> <edi:price units='Euro'>32.18</edi:price> </x> |
Los atributos, o bien son declaraciones de espacios de nombres, o bien sus nombres se dan como nombres cualificados:
[12] | Attribute | ::= | NSAttName
Eq
AttValue |
|
| QName Eq
AttValue | [ REN: Prefijo Declarado ] |
Un ejemplo de nombre cualificado que actúa como nombre de atributo:
<x xmlns:edi='http://ecommerce.org/schema'> <!-- el espacio de nombres del atributo 'taxClass' es http://ecommerce.org/schema --> <lineItem edi:taxClass="exempt">Baby food</lineItem> </x> |
El prefijo del espacio de nombres, a menos que sea xml
o xmlns
, debe haber sido declarado en un atributo de
declaración de espacio de nombres
ya sea en la etiqueta inicial del elemento en que se usa el prefijo
o en un elemento ascendiente (es decir, un elemento en cuyo
contenido aparezcan
los códigos de formato prefijados).
El prefijo xml
está ligado por definición al nombre de
espacio de nombres http://www.w3.org/XML/1998/namespace
.
El prefijo xmlns
sólo se utiliza para enlazar con
espacios de nombres y no está ligado en sí a ningún nombre de espacio
de nombres.
Esta restricción puede llevar a dificultades operativas en aquellos casos en que el atributo de declaración del espacio de nombres se proporcione no directamente en la entidad documento XML, sino a través de un atributo por defecto declarado en una entidad externa. Estas declaraciones pueden no ser leídas por programas basados en un procesador XML no validador. Muchas aplicaciones XML, entre ellas presumiblemente algunas sensibles a los espacios de nombres, no requieren el uso de procesadores validadores. Para el funcionamiento correcto de tales aplicaciones, las declaraciones de espacios de nombres deben proporcionarse o bien directamente o bien a través de atributos por defecto declarados en el subconjunto interno del DTD.
Los nombres de elemento y los tipos de atributo también se dan como nombres cualificados cuando aparecen en la declaraciones del DTD:
[13] | doctypedecl | ::= | '<!DOCTYPE' S
QName (S
ExternalID)?
S? ('['
(markupdecl
| PEReference
| S)*
']'
S?)? '>' |
[14] | elementdecl | ::= | '<!ELEMENT' S
QName
S
contentspec
S? '>' |
[15] | cp | ::= | (QName
| choice
| seq)
('?' | '*' | '+')? |
[16] | Mixed | ::= | '(' S?
'#PCDATA'
(S?
'|'
S?
QName)*
S?
')*' |
| '(' S? '#PCDATA' S? ')'
|
|||
[17] | AttlistDecl | ::= | '<!ATTLIST' S
QName
AttDef*
S? '>' |
[18] | AttDef | ::= | S
(QName | NSAttName)
S AttType
S DefaultDecl |
Se considera que la declaración del espacio de nombres se aplica al elemento en que está especificada y a todos los elementos pertenecientes al contenido de ese elemento, a menos que sea anulada por otra declaración de espacio de nombres con la misma parte NSAttName:
<?xml version="1.0"?> <!-- todos estos elementos están explícitamente en el espacio de nombres HTML --> <html:html xmlns:html='http://www.w3.org/TR/REC-html40'> <html:head><html:title>Frobnosticación</html:title></html:head> <html:body><html:p>Movido <html:a href='http://frob.com'>aquí.</html:a></html:p></html:body> </html:html> |
Se pueden declarar varios prefijos de espacios de nombres como atributos de un mismo elemento, como se muestra en este ejemplo:
<?xml version="1.0"?> <!-- ambos prefijos de espacios de nombres están disponibles en todas partes --> <bk:book xmlns:bk='urn:loc.gov:books' xmlns:isbn='urn:ISBN:0-395-36341-6'> <bk:title>Cheaper by the Dozen</bk:title> <isbn:number>1568491379</isbn:number> </bk:book> |
Se considera que se aplica un espacio de nombres por defecto al elemento en que está declarado (si ese elemento no tiene prefijo de espacio de nombres), y a todos los elementos sin prefijo pertenecientes al contenido de ese elemento. Si la referencia URI de la declaración de un espacio de nombres por defecto está vacía, entonces se considera que los elementos sin prefijo pertenecientes al ámbito de la declaración no están en ningún espacio de nombres. Obsérvese que los espacios de nombres por defecto no se aplican directamente a atributos.
<?xml version="1.0"?> <!-- estos elementos están en el espacio de nombre HTML, en este caso por defecto --> <html xmlns='http://www.w3.org/TR/REC-html40'> <head><title>Frobnosticación</title></head> <body><p>Movido <a href='http://frob.com'>aquí</a>.</p></body> </html> |
<?xml version="1.0"?> <!-- los tipos de elemento sin prefijo son de "books" --> <book xmlns='urn:loc.gov:books' xmlns:isbn='urn:ISBN:0-395-36341-6'> <title>Cheaper by the Dozen</title> <isbn:number>1568491379</isbn:number> </book> |
Un ejemplo más desarrollado que ilustra el ámbito de los espacios de nombres:
<?xml version="1.0"?> <!-- inicialmente, el espacio de nombres por defecto es "books" --> <book xmlns='urn:loc.gov:books' xmlns:isbn='urn:ISBN:0-395-36341-6'> <title>Cheaper by the Dozen</title> <isbn:number>1568491379</isbn:number> <notes> <!-- hacemos a HTML el espacio de nombres por defecto para algunos comentarios --> <p xmlns='urn:w3-org-ns:HTML'> ¡Este es un libro <i>muy</i> divertido! </p> </notes> </book> |
El espacio de nombres por defecto puede especificarse como la cadena vacía. Esto tiene el mismo efecto, dentro del ámbito de la declaración, que si no hubiera espacio de nombres por defecto.
<?xml version='1.0'?> <Beers> <!-- el espacio de nombres por defecto es ahora el de HTML --> <table xmlns='http://www.w3.org/TR/REC-html40'> <th><td>Name</td><td>Origin</td><td>Description</td></th> <tr> <!-- dentro de las celdas de la tabla no hay espacio de nombres por defecto --> <td><brandName xmlns="">Huntsman</brandName></td> <td><origin xmlns="">Bath, UK</origin></td> <td> <details xmlns=""><class>Bitter</class><hop>Fuggles</hop> <pro>Wonderful hop, light alcohol, good summer beer</pro> <con>Fragile; excessive variance pub to pub</con> </details> </td> </tr> </table> </Beers> |
En documentos XML conformes con esta especificación, ninguna etiqueta puede contener dos atributos que:
tengan nombres idénticos, o que
tengan nombres cualificados con la misma parte local y con prefijos que hayan sido ligados a nombres de espacios de nombres que sean idénticos.
Por ejemplo, cada una de las etiquetas iniciales mal
que siguen
es ilegal:
<!-- http://www.w3.org está ligado a n1 y n2 --> <x xmlns:n1="http://www.w3.org" xmlns:n2="http://www.w3.org" > <mal a="1" a="2" /> <mal n1:a="1" n2:a="2" /> </x> |
Sin embargo, las siguientes son legales, la segunda porque el espacio de nombres por defecto no se aplica a los nombres de atributos:
<!-- http://www.w3.org está ligado a n1 y es el valor por defecto --> <x xmlns:n1="http://www.w3.org" xmlns="http://www.w3.org" > <bien a="1" b="2" /> <bien a="1" n1:a="2" /> </x> |
En documentos XML conformes con esta especificación, los nombres de atributos y tipos de elemento deben concordar con la producción dada para QName y deben satisfacer las "Restricciones sobre los Espacios de Nombres".
Un documento XML es conforme con esta especificación si todos los demás símbolos que, por conformidad con XML, deben concordar con la producción XML para Name, concuerdan también con la producción de esta especificación para NCName.
El efecto de la conformidad es que en un documento conforme:
Todos los nombres de atributos y tipos de elemento contienen o cero o un símbolo de dos puntos (:).
Ningún nombre de entidad, destinos PI, o nombre de notación contiene ningún símbolo de dos puntos (:).
Estrictamente hablando, los valores de atributos declarados como de tipo ID, IDREF(S), ENTITY(IES), y NOTATION son también Names, y por tanto no deberían tener símbolos de dos puntos. Sin embargo, el tipo declarado de los valores de atributos sólo está disponible para los procesadores que lean declaraciones de códigos de formato (markup), por ejemplo procesadores validadores. Así, a menos que se haya especificado el uso de un procesador validador, no puede asegurarse se haya comprobado la conformidad con esta especificación de los contenidos de los valores de los atributos.
En las disciplinas de computación, el término "espacio de nombres" se refiere convencionalmente a un conjunto de nombres, es decir, una colección que no contiene elementos repetidos. Sin embargo, el considerar los nombres utilizados en el código XML como un espacio de nombres de este tipo dificultaría en gran medida su utilidad. La utilización principal de tales nombres en documentos XML es permitir la identificación de estructuras lógicas en documentos por parte de módulos de software tales como procesadores de búsqueda, motores de representación basados en hojas de estilo, y validadores basados en esquemas. Consideremos el ejemplo siguiente:
<section><title>Book-Signing Event</title> <signing> <author title="Mr" name="Vikram Seth" /> <book title="A Suitable Boy" price="$22.95" /></signing> <signing> <author title="Dr" name="Oliver Sacks" /> <book title="The Island of the Color-Blind" price="$12.95" /></signing> </section> |
En este ejemplo aparece tres veces el nombre title
dentro del código, y solamente el nombre proporciona información
insuficiente como para permitir su correcto procesamiento por un
módulo de software.
Otra área problemática se deriva del uso de atributos "globales", como se ilustra en este ejemplo de un fragmento de documento XML que se va a representar usando una hoja de estilo CSS:
<RESERVATION> <NAME HTML:CLASS="largeSansSerif">Layman, A</NAME> <SEAT CLASS="Y" HTML:CLASS="reallyImportant">33B</SEAT> <DEPARTURE>1997-05-24T07:55:00+1</DEPARTURE></RESERVATION> |
En este caso, el atributo CLASS
, que indica la clase del
billete y toma valores como "J", "Y", y "C", es diferente en todos
los niveles semánticos del atributo HTML:CLASS
, que se
usa para simular riqueza sintáctica en HTML, con la finalidad de
superar el limitado repertorio de elementos por medio de subclases.
XML 1.0 no integra ningún método para declarar atributos "globales"; objetos
tales como el atributo HTML CLASS
son globales sólo en
su descripción literaria y en su interpretación por las aplicaciones HTML.
Sin embargo, se observa que estos atributos, una de cuyas características
distintivas es que sus nombres son únicos, aparecen frecuentemente en
diversas aplicaciones.
Para mantener el objetivo de que tanto los nombres cualificados como los no cualificados sean útiles para su propósito, identificamos los nombres que aparecen en un espacio de nombres XML según su pertenencia a uno o varios espacios de nombres tradicionales (es decir, con estructura de conjunto) disjuntos, llamados particiones del espacio de nombres. Las particiones son:
En esta partición aparecen todos los tipos de elemento de un espacio de nombres XML. Cada uno tiene una parte local única; la combinación del nombre del espacio de nombres y de la parte local identifica unívocamente al tipo de elemento.
Esta partición contiene los nombres de todos los atributos que se han definido en este espacio de nombres como globales. La única característica exigida a un atributo global es que su nombre sea único en la partición de atributos globales. Esta especificación no dice nada sobre la utilización apropiada de estos atributos. La combinación del nombre del espacio de nombres y del nombre del atributo identifica unívocamente al atributo global.
Cada tipo de elemento de la Partición de Todos los Tipos de Elemento tiene un espacio de nombres asociado en que aparecen los nombres de los atributos no cualificados que se proporcionan para ese elemento. Esto es un espacio de nombres tradicional porque la aparición de nombres de atributo duplicados está prohibida por XML 1.0. La combinación del nombre del atributo con el tipo del elemento y el nombre del espacio de nombres identifica unívocamente a cada atributo no cualificado.
En documentos XML conformes con esta especificación, los nombres de todos los atributos cualificados (prefijados) se asignan a la partición de atributos globales, y los nombres de todos los atributos no cualificados se asignan a la partición por tipo de elemento apropiada.
Para especificar reglas y hacer comparaciones de manera conveniente, definimos, para cada tipo de elemento y nombre de atributo de un documento XML, una forma expandida, expresada aquí con la sintaxis de elementos de XML.
[Definición: Un
tipo de elemento expandido se expresa como un elemento XML
vacío de tipo ExpEType
.
Tiene un atributo type
obligatorio que da la parte local
(LocalPart) del tipo, y un atributo opcional
ns
que da, si el elemento está cualificado, el
nombre de su espacio de nombres.]
[Definición: Un
nombre de atributo expandido se expresa como un elemento XML
vacío del tipo ExpAName
.
Tiene un atributo obligatorio name
que da el nombre. Si
el atributo es global, tiene un atributo obligatorio ns
que
da el nombre del espacio de nombres;
en caso contrario, tiene un atributo obligatorio eltype
que
da el tipo del elemento al que está ligado, y un atributo opcional
elns
que da, si es que se conoce, el nombre del espacio del
espacio de nombres de dicho elemento.]
Unas pequeñas variaciones de los ejemplos anteriores ilustrarán el funcionamiento de los tipos de elementos y nombres de atributos expandidos. Cada uno de los siguientes fragmentos está seguido de una tabla que muestra la expansión de los nombres:
<!-- 1 --> <section xmlns='urn:com:books-r-us'> <!-- 2 --> <title>Book-Signing Event</title> <!-- 3 --> <signing> <!-- 4 --> <author title="Mr" name="Vikram Seth" /> <!-- 5 --> <book title="A Suitable Boy" price="$22.95" /> </signing> </section> |
Los nombres se expandirían del siguiente modo:
Línea | Nombre | Expandido |
1 | section | <ExpEType type="section" ns="urn:com:books-r-us" /> |
2 | title | <ExpEType type="title" ns="urn:com:books-r-us" /> |
3 | signing | <ExpEType type="signing" ns="urn:com:books-r-us" /> |
4 | author | <ExpEType type="author" ns="urn:com:books-r-us" /> |
4 | title | <ExpAName name='title' eltype="author" elns="urn:com:books-r-us" /> |
4 | name | <ExpAName name='name' eltype="author" elns="urn:com:books-r-us" /> |
5 | book | <ExpEType type="book" ns="urn:com:books-r-us" /> |
5 | title | <ExpAName name='title' eltype="book" elns="urn:com:books-r-us" /> |
5 | price | <ExpAName name='price' eltype="book" elns="urn:com:books-r-us" /> |
<!-- 1 --> <RESERVATION xmlns:HTML="http://www.w3.org/TR/REC-html40"> <!-- 2 --> <NAME HTML:CLASS="largeSansSerif">Layman, A</NAME> <!-- 3 --> <SEAT CLASS="Y" HTML:CLASS="largeMonotype">33B</SEAT> <!-- 4 --> <HTML:A HREF='/cgi-bin/ResStatus'>Check Status</HTML:A> <!-- 5 --> <DEPARTURE>1997-05-24T07:55:00+1</DEPARTURE></RESERVATION> |
1 | RESERVATION | <ExpEType type="RESERVATION" /> |
2 | NAME | <ExpEType type="NAME" /> |
2 | HTML:CLASS | <ExpAName name="CLASS" ns="http://www.w3.org/TR/REC-html40" /> |
3 | SEAT | <ExpEType type="SEAT" /> |
3 | CLASS | <ExpAName name="CLASS" eltype="SEAT" /> |
3 | HTML:CLASS | <ExpAName name="CLASS" ns="http://www.w3.org/TR/REC-html40" /> |
4 | HTML:A | <ExpEType type="A" ns="http://www.w3.org/TR/REC-html40" /> |
4 | HREF | <ExpAName name="HREF" eltype="A" elns="http://www.w3.org/TR/REC-html40" /> |
5 | DEPARTURE | <ExpEType type="DEPARTURE" /> |
La restricción expresada arriba por 5.3 Unicidad de Atributos puede implementarse directamente obligando a que ningún elemento tenga dos atributos cuyos nombres expandidos sean equivalentes, es decir, que tengan los mismos pares atributo-valor.
Esta obra refleja el trabajo de una gran cantidad de personas, incluyendo especialmente a los miembros del Grupo de Trabajo XML y del Grupo de Interés Especial del World Wide Web Consortium y a los participantes de las Actividades del W3C en el campo de los Metadatos. Las contribuciones de Charles Frankston de Microsoft han sido particularmente valiosas.
AVISO DE COPYRIGHT
Copyright © 1994-2001 World Wide Web Consortium, (Massachusetts Institute of Technology, Institut National de Recherche en Informatique et en Automatique, Keio University). Todos los derechos reservados. http://www.w3.org/Consortium/Legal/
Los titulares del copyright proporcionan los documentos públicos que se encuentran en el sitio web del W3C de acuerdo con la siguiente Licencia. El software y las Definiciones de Tipo de Documento (Document Type Definitions, DTDs) asociadas con las especificaciones del W3C están gobernados por el aviso de copyright de Software.
Por el uso y/o la copia de este documento, usted (el beneficiario de la Licencia del copyright) está de acuerdo en que ha leído, entendido y que respetará los siguientes términos y condiciones:
Se concede permiso para usar, copiar y distribuir los contenidos de este documento en cualquier medio y para cualquier propósito sin necesidad del pago de fianzas ni royalties, siempre y cuando se incluya la siguiente información en TODAS las copias de este documento, o partes del mismo, que usted utilice:
Un vínculo o URL al documento original del W3C.
El aviso de copyright pre-existente del autor original; caso de no existir éste, debería utilizarse un aviso de la forma siguiente: "Copyright © [$fecha-del-documento] World Wide Web Consortium, (Massachusetts Institute of Technology, Institut National de Recherche en Informatique et en Automatique, Keio University). All Rights Reserved. http://www.w3.org/Consortium/Legal" (Preferiblemente en hipertexto, pero se permite una representación en texto simple.)
Si existe, el STATUS o ESTADO del documento W3C.
Cuando el espacio lo permita, debería incluirse una copia del texto completo de esta NOTICIA. Le instamos a que mencione a los autores en cualquier programa, documento, u otro artículo o producto que usted cree como consecuencia de la implementación de los contenidos de este documento o de cualquier parte del mismo.
Esta licencia no concede permiso para crear modificaciones o documentos derivados de documentos del W3C. Sin embargo, caso de satisfacerse adicionales (documentados en el Copyright FAQ), el W3C puede conceder permiso para crear modificaciones o documentos derivados a los individuos que satisfagan dichos requisitos.
ESTE DOCUMENTO SE OFRECE "TAL COMO ESTA". LOS PROPIETARIOS DEL COPYRIGHT NO HACEN GARANTIAS NI REPRESENTACIONES DE NINGUN TIPO, EXPRESAS O IMPLICITAS, INCLUYENDO, AUNQUE SIN LIMITARSE A, LAS GARANTIAS DE COMERCIALIZACION, ADECUACION A UN PROPOSITO ESPECIFICO, O TITULO; QUE LOS CONTENIDOS DEL DOCUMENTO SEAN APROPIADOS PARA CUALQUIER PROPOSITO; NI QUE LA IMPLEMENTACION DE TALES CONTENIDOS NO INFRINGIRA LAS PATENTES, DERECHOS DE AUTOR, MARCAS REGISTRADAS O COMERCIALES U OTROS DERECHOS DE TERCERAS PERSONAS.
LOS PROPIETARIOS DEL COPYRIGHT NO SERAN RESPONSABLES DE NINGUN DAÑO DIRECTO, INDIRECTO, ESPECIAL O CONSECUENTE DEBIDO A CUALQUIER USO DEL DOCUMENTO O DEL FUNCIONAMIENTO O IMPLEMENTACION DE LOS CONTENIDOS DEL MISMO.
El nombre y marcas registradas de los propietarios del copyright NO pueden utilizarse en anuncios o publicidad relativos a este documento o a sus contenidos sin un permiso previo por escrito. Los derechos de autor de este documento pertenecerán en todo momento a los propietarios del copyright.