Estas consideraciones exigen que las estructuras de los documentos deban tener nombres estructurados de modo tal de evitar colisiones entre nombres de distintos vocabularios de marcado. Esta especificación describe un mecanismo, espacios de nombre XML, que logra esto al asignar nombres expandidos a elementos y atributos.
1.1 Comentario sobre notación y usoEn todos los casos en que aparecen DESTACADAS, las palabras clave DEBE, NO DEBE, OBLIGATORIO, DEBERÍA, NO DEBERÍA, PUEDE en este documento interpretarse según se describe en [Palabras clave.
Nótese 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 los 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 NSC
es una "Restricción del espacio de nombres" (Namespace Constraint), una de las reglas que DEBEN seguir los documentos conformes con esta especificación.
[Definición: Un espacio de nombre XML es identificado mediante una referencia IRI; los nombres de elemento y atributo pueden ser colocados en un espacio de nombre XML mediante los mecanismos descritos en esta especificación. ]
[Definición: Un nombre expandido es un par constituido por un nombre de espacio de nombre y un nombre local. ] [Definición: Para un nombre N en un espacio de nombre identificado mediante un IRI I, el nombre del espacio de nombre es I. Para un nombre N que no está en un espacio de nombre, el nombre del espacio de nombre no tiene asignación de valor. ] [Definición: En ambos casos el nombre local es N. ] Es esta combinación del espacio de nombre IRI manejado universalmente y los nombres locales del vocabulario la que resulta efectiva para evitar las colisiones de nombres.
Las referencias IRI pueden contener caracteres que no están permitidos en los nombres, y frecuentemente son inconvenientemente largas, de manera que los nombres expandidos no son usados directamente para nombrar elementos y atributos en los documentos XML. En cambio, se utilizan nombres cualificados. [Definición: Un nombre cualificado es un nombre sujeto a la interpretación del espacio de nombre. ] En los documentos que se adecuan a esta especificación, los nombres de elementos y atributos aparecen como nombres cualificados. Sintácticamente, son nombres con prefijo o nombres sin prefijo. Se provee una sintaxis de declaración basada en atributos para vincular los prefijos a los nombres de espacio de nombre y para vincular un espacio de nombre por defecto que se aplica a los nombres de elementos sin prefijo; éstas declaraciones están limitadas a los elementos en los cuales aparecen, de modo que pueden darse distintas vinculaciones en distintas partes de un documento. Los procesadores que se adecuen a esta especificación DEBEN reconocen y actúan sobre estas declaraciones y prefijos.
2.3 Comparación referencias IRILas referencias IRI que identifican nombres de espacio se comparan para determinar si un nombre pertenece a un espacio de nombre dado, y si dos nombres pertenecen al mismo espacio de nombre. [Definición: Los dos IRI son tratados como cadenas, y son idénticos si y sólo si las cadenas son idénticas, esto es, si son la misma secuencia de caracteres. ] La comparación toma en cuenta mayúsculas y minúsculas, y no se hace ni deshace ningún escape por %.
Como consecuencia de esto, las referencias IRI que no son idénticas en este sentido pueden resolverse de la misma manera. Algunos ejemplos incluyen las referencias IRI que sólo difieren en mayúsculas o minúsculas, o en caracteres de escape por %, o que están en entidades externas con distintos URI base (pero nótese que los IRI relativos son desaprobados como nombres de espacio de nombre).
En una declaración de espacio de nombre, la referencia IRI es el valor normalizado del atributo, de modo que el reemplazo de las referencias XML de carácter y entidad ya ha sido realizado antes de cualquier comparación.
Ejemplos:
Las siguientes referencias IRI son todas diferentes en lo que hace a identificar espacios de nombre, pues difieren en mayúsculas/minúsculas:
http://www.example.org/wine
http://www.Example.org/wine
http://www.example.org/Wine
Las siguientes referencias IRI también son todas diferentes en lo referente a identificar espacios de nombre:
http://www.example.org/rosé
http://www.example.org/ros%c3%a9
http://www.example.org/ros%c3%A9
http://www.example.org/ros%C3%a9
http://www.example.org/ros%C3%A9
Y también las siguientes:
http://www.example.org/~wilbur
http://www.example.org/%7ewilbur
http://www.example.org/%7Ewilbur
Si la entidad eacute ha sido definida como é, todos los siguientes tags de inicio contienen declaraciones de espacio de nombre que vinculan el prefijo p a la misma referencia IRI, http://example.org/rosé
.
<p:foo xmlns:p="http://example.org/rosé">
<p:foo xmlns:p="http://example.org/rosé">
<p:foo xmlns:p="http://example.org/rosé">
<p:foo xmlns:p="http://example.org/rosé">
<p:foo xmlns:p="http://example.org/rosé">
Debido al riesgo de confusión entre IRI que serían equivalentes en caso de estar sin referencias, se rechaza el uso de caracteres %-escape en los nombres de espacio de nombre.
3 Declaración de espacios de nombre[Definición: Un espacio de nombre (o más precisamente, un vínculo de espacio de nombre) se declara utilizando un conjunto de atributos reservados. Este nombre de atributo debe ser xmlns o comenzar con xmlns:. Estos atributos, como cualquier otro atributo XML, se pueden proporcionar directamente o pueden tener un valor por defecto. ]
Nombres de atributos para la declaración de espacios de nombreEl valor normalizado del atributo DEBE ser una referencia IRI - el nombre de espacio de nombre que identifica al espacio de nombre - o una cadena vacía. El nombre del espacio de nombre, para servir a la finalidad deseada, DEBERÍA tener las características de unicidad y persistencia. El objetivo es que no sea directamente usable para la obtención de un esquema (si es que existe alguno). Un ejemplo de una sintaxis diseñada con estos fines en mente es el de los Nombres Uniformes de Recursos [RFC2141]. Sin embargo, debería tenerse en cuenta que los URL 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 nombre, usado para asociar nombres de elementos y atributos con el nombre del espacio de nombre dado por el valor del atributo en el ámbito del elemento al cual está ligada la declaración.]
[Definición: Si el nombre del atributo concuerda con DefaultAttName, entonces el nombre de espacio de nombre dado por el valor del atributo es aquel del espacio de nombres por defecto en el ámbito del elemento al cual está ligada la declaración.] En 6 Aplicando espacios de nombre 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 del espacio de nombres edi con el nombre de espacio de nombres http://ecommerce.example.org/schema
:
<x xmlns:edi='http://ecommerce.example.org/schema'> <!-- el prefijo "edi" está ligado a http://ecommerce.example.org/schema para el elemento "x" y sus contenidos ---> </x>5 Utilización de nombres cualificados
En los documentos XML conformes a esta especificación, los nombres de elementos se dan como nombres cualificados, según se describe a continuación:
Nombres de elementoUn ejemplo de nombre cualificado que funciona como nombre de elemento:
Los atributos, son declaraciones de espacios de nombres, o bien sus nombres se dan como nombres cualificados:
AtributoUn ejemplo de nombre cualificado que funciona como nombre de atributo:
Esta restricción puede ocasionar dificultades operativas en aquellos casos en que el atributo de declaración de espacio de nombres no se proporcione 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 de 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 directamente o bien a través de atributos por defecto declarados en el subconjunto interno del DTD.
Los nombres de elementos y nombres de atributos también se dan como nombres cualificados cuando aparecen en declaraciones en el DTD:
Nombres cualificados en declaraciones 6 Aplicación de espacios de nombres a elementos y atributos 6.2 Espacios de nombres por defectoEl ámbito de una declaración de espacio de nombres por defecto se extiende desde el comienzo de la etiqueta inicial, en la cual aparece, hasta el final de la última etiqueta correspondiente, excluyendo el ámbito de cualquier declaración interna de espacio de nombre por defecto. En caso de una etiqueta vacía, el ámbito es la etiqueta misma.
Una declaración de espacio de nombres por defecto se aplica a todos los nombres de elementos sin prefijo dentro de su ámbito. Las declaraciones de espacio de nombres por defecto no se aplican directamente a los nombres de atributos; la interpretación de atributos sin prefijo está determinada por el elemento en el cual aparecen.
Si hay una declaración de espacio de nombres por defecto, el nombre expandido que corresponde a un nombre de elemento sin prefijo tiene la IRI del espacio de nombre por defecto como su nombre del espacio de nombre. Si no hay declaración de espacio de nombres por defecto en ámbito, el nombre del espacio de nombres no tiene valor asignado. El nombre del espacio de nombres para un nombre de atributo sin prefijo siempre carece de valor asignado. En todos los casos, el nombre local es la parte local (que por supuesto es igual al nombre mismo sin prefijo).
<?xml version="1.1"?> <!-- los elementos están en el espacio de nombre HTML, en este caso por defecto --> <html xmlns='http://www.w3.org/1999/xhtml'> <head><title>Frobnostication</title></head> <body><p>Movido a <a href='http://frob.example.com'>aquí</a>.</p></body> </html>
<?xml version="1.1"?> <!-- los tipos de elementos 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.1"?> <!-- 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='http://www.w3.org/1999/xhtml'> Este es un libro <i>divertido</i> ! </p> </notes> </book>
El valor del atributo en una declaración de espacio de nombres por defecto PUEDE estar vacío. Esto tiene el mismo efecto, dentro del ámbito de la declaración, que si no hubiera espacio de nombres por defecto.
<?xml version='1.1'?> <Beers> <!-- el espacio de nombres por defecto es ahora el de HTML --> <p xmlns='http://www.w3.org/1999/xhtml'> <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>7 Conformidad de documentos
Esta especificación se aplica a los documentos XML 1.1. Para adecuarse a esta especificación, un documento DEBE estar bien formado de acuerdo con la especificación XML 1.1 [XML 1.1].
En documentos XML conformes con esta especificación, los nombres de elementos y atributos DEBEN concordar con la producción dada para QName y DEBEN satisfacer las "Restricciones sobre los espacios de nombres". Todos los restantes símbolos en el documento, que son OBLIGATORIOS para la conformidad con XML 1.1, para coincidir con la producción XML para Name, DEBEN concordar con la producción de esta especificación para NCName.
[Definición: Un documento está bien formado en espacio de nombres se se adecua a esta especificación. ]
Se sigue que en un documento bien formado en espacio de nombres:
Todos los nombres de elementos y atributos contienen cero o un símbolo de dos puntos (:).
Ningún nombre de entidad, destinos de instrucción de procesamiento, o nombre de notación contiene algún símbolo de dos puntos (:).
Además, un documento bien formado en espacio de nombres también puede ser válido en espacio de nombres.
[Definición: Un documento bien formado en espacio de nombres es válido en espacio de nombres si es válido de acuerdo con la especificación XML 1.1, y todos los símbolos aparte de nombres de elementos y atributos que sean OBLIGATORIOS, para validez XML 1.1, coincidan con la producción XML para Name, coincidan con la producción de esta especificación para NCName. ]
Un documento válido en espacio de nombres:
Ningún atributo con un tipo declarado de ID, IDREF(S), ENTITY(IES), o NOTATION contiene algún símbolo de dos puntos (:).
Para una definición y discusión más general de los IRI, consulte el [Borrador 5 de IRI] (trabajo en progreso).
Las referencias URI se limitan a un subconjunto de caracteres ASCII; las referencias IRI permiten la mayoría de los caracteres Unicode desde #xA0 en adelante. Los borradores anteriores del RFC de IRI (ej. [Borrador 3 IRI]) también permitían algunos de los caracteres ASCII no permitidos, pero el borrador actual ([Borrador 5 IRI]) no.
[Definición: Los caracteres adicionales permitidos en los IRI por el [Borrador 5 IRI] son: ]
los caracteres Unicode del plano 0 #xA0 - #xD7FF, #xF900-#xFDCF, #xFDF0-#xFFEF
los caracteres Unicode de los planos 1 al 14 #x10000-#x1FFFD ... #xD0000-#xDFFFD, #xE1000-#xEFFFD
[Definición: Una referencia IRI es una cadena que puede ser convertida en una referencia URI aplicando los siguientes pasos: ]
Convertir la parte del nombre del anfitrión, en caso de estar presente, utilizando la operación ToASCII detallada en la Sección 4.1 del [RFC3490] con los indicadores UseSTD3ASCIIRules y AllowUnassigned como TRUE (verdadero).
Libere todos los caracteres adicionales del siguiente modo:
Cada carácter adicional es convertido a UTF-8 [RFC3629] como uno o más bytes.
Los bytes resultantes son liberados con el mecanismo de escape URI (esto es, convertidos a %HH, donde HH es la notación hexadecimal del valor de byte).
El carácter original es reemplazado por la secuencia de caracteres resultante.
Nota:
El algoritmo que se encuentra en el [Borrador 5 URI] incluye un paso de normalización UCS, sin diferenciar cuáles cadenas son referencias IRI.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.3