2011-05-24 105 views
11

La validación requiere que la configure, pero ¿por qué? Me gusta pensar que el código en mi documento xhtml está haciendo algo.¿Qué hace el atributo xmlns?

+0

Lo siento, la bola de cristal necesita limpieza. ¿Quizás podría publicar un ejemplo de XML para mostrarnos de qué está hablando? – bmargulies

+0

Muy similar a [http://stackoverflow.com/questions/5838343/what-does-html-xmlns-http-www-w3-org-1999-xhtml-do] – colinross

Respuesta

9

Desde el W3Schools:

el atributo xmlns especifica el espacio de nombres XML para un documento.

Esto básicamente ayuda a evitar conflictos de espacio de nombres entre diferentes documentos xml, si por ejemplo un desarrollador mezcla documentos xml de diferentes aplicaciones xml.

Un ejemplo de esto (también desde el sitio web W3):

datos XML para definir una tabla HTML:

<table> 
    <tr> 
    <td>Apples</td> 
    <td>Bananas</td> 
    </tr> 
</table> 

datos XML para definir la información sobre una mesa de café

<table> 
    <name>African Coffee Table</name> 
    <width>80</width> 
    <length>120</length> 
</table> 

Aquí hay dos elementos de tabla, que producirían un conflicto. Para solucionar este problema, puede agregar un espacio de nombres para significar el que parte de la información define una tabla HTML y que comprende información sobre una mesa de café:

<root> 

<h:table xmlns:h="http://www.w3.org/TR/html4/"> 
    <h:tr> 
    <h:td>Apples</h:td> 
    <h:td>Bananas</h:td> 
    </h:tr> 
</h:table> 

<f:table xmlns:f="http://www.w3schools.com/furniture"> 
    <f:name>African Coffee Table</f:name> 
    <f:width>80</f:width> 
    <f:length>120</f:length> 
</f:table> 

+16

No enlace a una página de w3schools con texto "estándar W3". Ver http://w3fools.com. Como es la norma, w3schools no es totalmente correcto aquí - no especifica el espacio de nombre para el documento - especifica el espacio de nombres de elementos no prefijados para el elemento en el que aparece y sus elementos descendientes, excepto cuando esos elementos descendientes lo redefinen. Y solo tiene algún efecto cuando se analiza con un analizador XML. – Alohci

+0

W3Schools no es el W3C, así que no escriba estándares. He editado la pregunta para eliminar ese reclamo. – Quentin

1

imaginar que ambos esquemas XLM definidos que incluyen foobar etiqueta . ¿Cómo distinguirías si ambos se usan en el mismo documento? La respuesta es: los colocamos en diferentes espacios de nombres. Y eso es lo que xmlns es para Es similar a los paquetes de Java.

0

Cuando un documento XHTML se sirve como text/html, como suele ser, el atributo xmlns no hace nada.

Cuando se sirve un documento XHTML con un tipo de contenido XML, el atributo especifica el espacio de nombre predeterminado de los elementos. En este caso, el impacto práctico es que si se omite el atributo, ningún elemento tiene su significado HTML: todos los elementos se toman como XML puro, lo que significa que no tienen ningún comportamiento especial ni formato predeterminado, y el documento es bastante inútil. no se toma como HTML en absoluto.