Namespace prefix (o porque aparece cfdi: en nodos del CFDI)
Publicado: Vie Oct 29, 2010 9:10 am
Conflicto entre nombre.
En XML los nombres de los elementos son definidos por el desarrollador. A menudo esto resulta en un conflicto cuando se trata de mezclar documentos XML de diferentes aplicaciones
Este XML contiene informacion de una tabla HTML
Este XML contiene informacion de una mesa (table = "mesa" en ingles)
Si estos fragmentos de XML se juntam habria un conflicto, los dos contienen el elemento <table> pero tienen distintos contenidos y significados.
Un interprete de XML no sabria como manejar las diferencias.
Resolviendo el conflicto de nombre usando Prefijos
El conflicto de nombres en XML se puede evitar usando un "name prefix" (prefijo de nombre)
En el ejemplo no hay comflicto porque los dos elementos <table> tienen distintos nombres.
XML Namespaces - El atributo xmlns
Cuando se usa prefijos en XML se debe definir "namespace"
Este namespace esta definido por el atributo xmlns en el primer nodo de un elemento
La declaracion del namespace sigue la siguiente sintaxis : xmlns:prefijo="URI"
En el ejemplo anterior el atributo xmlns en la etiqueta <table> le da a h: y a f: un namespace adecuado.
Cuando se define un namespace para un elemento, todos los elementos hijos con el mismo prefijo son asociados con el mismo namespace.
Sigue en la parte II.......
En XML los nombres de los elementos son definidos por el desarrollador. A menudo esto resulta en un conflicto cuando se trata de mezclar documentos XML de diferentes aplicaciones
Este XML contiene informacion de una tabla HTML
Código: Seleccionar todo
<table>
<tr>
<td>Apples</td>
<td>Bananas</td>
</tr>
</table>
Código: Seleccionar todo
<table>
<name>African Coffee Table</name>
<width>80</width>
<length>120</length>
</table>
Un interprete de XML no sabria como manejar las diferencias.
Resolviendo el conflicto de nombre usando Prefijos
El conflicto de nombres en XML se puede evitar usando un "name prefix" (prefijo de nombre)
Código: Seleccionar todo
<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>
XML Namespaces - El atributo xmlns
Cuando se usa prefijos en XML se debe definir "namespace"
Este namespace esta definido por el atributo xmlns en el primer nodo de un elemento
La declaracion del namespace sigue la siguiente sintaxis : xmlns:prefijo="URI"
Código: Seleccionar todo
<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>
</root>
Cuando se define un namespace para un elemento, todos los elementos hijos con el mismo prefijo son asociados con el mismo namespace.
Sigue en la parte II.......