Estoy tratando de entender por qué necesitamos URI para espacios de nombres XML y no puedo encontrar un propósito para eso. ¿Alguien puede alegrarme un poco mostrando su uso en un ejemplo concreto?
EDITAR:
Ok, por ejemplo: tengo esto de w3schools
<root
xmlns:h="http://www.w3.org/TR/html4/"
xmlns:f="http://www.w3schools.com/furniture">
<h:table>
<h:tr>
<h:td>Apples</h:td>
<h:td>Bananas</h:td>
</h:tr>
</h:table>
<f:table>
<f:name>African Coffee Table</f:name>
<f:width>80</f:width>
<f:length>120</f:length>
</f:table>
</root>
Entonces, ¿qué debería http://www.w3schools.com/furniture
contener?
Respuestas:
Un espacio de nombres es una forma de decir "Este tipo de Foo" es diferente de "Ese tipo de Foo", a pesar de que se escriben de la misma manera. O, si prefieres " MY kind of Foo" es diferente de " Everybody elses kind of Foo".
La forma técnica de decir esto es "El URI de mi espacio de nombres para Foo" es diferente del URI de todos los demás para su espacio de nombres para Foo. En otras palabras, los URI son solo cadenas que le permiten decirlo.
El truco consiste en decir: "Hey, las URL son URI válidas", y luego usar un URI correspondiente a una URL bajo su control. Si todo el mundo hace eso, entonces evita las colisiones accidentales de espacio de nombres. También podría haber dicho el espacio de nombres "A" y el espacio de nombres "B", pero se arriesga a que otra persona use el mismo espacio de nombres también, y entonces su tipo de Foo ya no es diferente de su Foo, que es exactamente lo que desea evitar .
Luego puede agregar una convención adicional a las URL utilizadas como URI, por ejemplo, que la URL debe corresponder a una página que contenga documentación o XSD o similar, pero esto no es necesario. Es solo conveniente.
fuente
a
sería totalmente válido? ¿Estúpido, pero válido? ¿O tiene que ser un URI?En términos generales, cualquier identificador único serviría para un espacio de nombres; pero como se supone que es único a nivel mundial , el estándar tendría que exigir alguna autoridad de arbitraje o utilizar otro recurso que sea al mismo tiempo único a nivel mundial pero fácil de conseguir y demostrar que es suyo.
¡Oh mira! si tienes un dominio, obviamente es solo tuyo, ¡y es fácil demostrar que es tuyo!
Por ejemplo, querían evitar la situación en la que dos librerías diferentes comienzan a usar "libros" como un espacio de nombres, con definiciones internas totalmente diferentes. Si bien lo usan internamente, no hay problema; pero tan pronto como uno de ellos quiere publicar sus especificaciones, se desata el infierno.
En cambio, si se le anima a usar su dominio, cualquiera (bueno, cualquiera que tenga un dominio) puede definir su propio espacio de nombres privado con la confianza de que nadie más usará el mismo identificador.
Como beneficio adicional, opcionalmente puede almacenar la definición de su espacio de nombres en el URI, lo que hace que se auto documente.
Me parece una gran idea.
fuente
¿Qué especifica xmlIns?
Como nodos de atributo llamados "xmlns" o "xmlns: xxx", exactamente como los espacios de nombres están escritos en el documento XML de origen. Este es el modelo presentado por DOM.
¿Qué contiene el URI?
Un espacio de nombres XML se declara utilizando el pseudoatributo XML reservado xmlns o xmlns: prefijo, cuyo valor debe ser un nombre de espacio de nombres válido.
Por ejemplo, la siguiente declaración asigna el prefijo "xhtml:" al espacio de nombres XHTML:
Como he descubierto después de leer el artículo en Wikipedia. El URI contiene las especificaciones con formato XML del espacio de nombres que proporcionan un método para evitar conflictos de nombres de elementos.
Es posible que sepa que el documento xml utiliza
XML Schema
la estructura de elementos / tablas / clases de elementos del documento XML.¿Qué debe tener http://www.w3schools.com/furniture ?
La respuesta está en su página donde aprendió sobre el espacio de nombres XML. Consulte la
Namespaces in Real Use
sección sobre este artículo de W3Schools .Verifique el siguiente enlace de stackoverflow que demuestra lo que lleva este URI:
¿Cómo crear y usar el espacio de nombres XML?
fuente
URI = nombre o identificador globalmente único del espacio de nombres
Considere crear una base de datos o documento sobre la gestión financiera de la logística de la industria petrolera. Eso necesitaría usar vocabularios específicos (es decir, términos controlados) para cada uno de los temas: base de datos, documento, gestión, finanzas, logística, petróleo e industria.
Si ninguno de los términos se superpone a estos siete vocabularios, solo se necesita un URI. Pero para cada término que se superponga con otros términos en estos vocabularios, necesitaría un vocabulario adicional específico del tema identificado en un URI o IRI. Una forma de evitar esto es crear una taxonomía fusionada, con términos generales más amplios y términos más específicos para temas específicos.
Esto podría expandirse a un diccionario de sinónimos que también muestre los sinónimos de la jerga de un término y permita la especificación de un término preferido entre esos sinónimos de la jerga.
fuente