A fin de comprender la semántica Xpath, primero es necesario entender modelo de datos XPath, es decir, cómo XPath trata un documento XML. El modelo de datos XPath representa cada documento XML como un árbol de nodos. Del mismo modo podemos imaginar un modelo basado en la relaciones familiares, esto es, padres, hijos, descendientes, ascendientes, etc.
Cada nodo puede ser de uno de estos tipos siguientes:
El nodo raíz es un nodo virtual que no corresponde a ningún componente en el documento XML. Más bien se trata del lugar donde comienza el árbol XML. El nodo raíz puede tener hijos comentarios para cada comentario que esté fuera del elemento documento, hijos instrucciones de procesamiento, la declaración XML . El nodo raíz no tiene padre.
Este elemento también es conocido como el elemento documento.
Todos los documentos XML deben de contener una etiqueta raíz que, al igual que cualquier otra del documento constará de apertura y cierre. Dentro de la raíz se desarrollará el contenido del documento XML.
Ejemplo nº1 Desarrollo del contenido del nodo raíz
<?xml version="1.0" encoding="UTF-8"?> <!-- New document created with EditiX at Wed Jun 13 16:55:21 BST 2012 --> <!DOCTYPE example [<!ENTITY copy "©">]> <?php $a = 'Instrucción de proceso'; ?> <Elemento_raíz attribute="t12"> <?php echo 'otra instrucción de proceso'; ?> <contenido/> texto opcional </Elemento_raíz>
Un nodo elemento corresponde a un elemento XML y se etiqueta con una etiqueta de apertura y otra de cierre. Cada elemento siempre tendrá un padre, salvo que sea el nodo raíz y puede tener hijos de tipo de elemento, comentarios, instrucciones de procesamiento y el texto. Los atributos y espacios de nombres asociados con el elemento no son hijos del nodo elemento. El valor de cadena de un nodo elemento es el texto contenido entre las etiquetas de inicio y cierre del elemento con exclusión de todas las etiquetas, comentarios e instrucciones de procesamiento.
Un nodo de atributo corresponde a una cualidad o propiedad del elemento al que califica. Su padre es el nodo de elemento que contiene el atributo (sin embargo, el atributo no es un hijo de su padre!). El valor de cadena de un nodo atributo es el valor del atributo.
Ejemplo nº2 Ejemplo de documento con atributos en sus elementos
<?xml version="1.0" encoding="UTF-8"?> <!-- New document created with EditiX at Wed Jun 13 17:09:14 BST 2012 --> <atributos> <!--Representamos mediante atributos tres bolas: una mía, otra tuya y otra suya. La primera es roja, la segunda amarilla y la tercera verde--> <bolas> <bola color="rojo" situación="primera"> mía </bola> <bola color="amarilla" situación="segunda"> tuya </bola> <bola color="verde" situación="tercera"> suya </bola> </bolas> </atributos>
Un nodo de texto es una cadena de texto situada dentro de las etiquetas, los comentarios o las instrucciones de procesamiento. Tiene un nodo padre, pero carece de hijos. Su valor de cadena es el texto del nodo.
Ejemplo nº3 Nodo de texto
<?xml version="1.0" encoding="UTF-8"?> <!-- New document created with EditiX at Wed Jun 13 17:09:14 BST 2012 --> <xml> El lenguaje de marcas extensible, XML, es un lenguaje de etiquetas que define un conjunto de reglas para codificar documentos de forma que puedan ser entendidos tanto por personas como por ordenadores. </xml>
Un nodo de espacio de nombres representa un espacio de nombres. Al igual que los nodos de atributo, los nodos de espacio de nombres tiene un padre, pero no son hijos de sus padres. El valor de cadena de un nodo de espacio de nombres es el URI de espacio de nombres. Los espacios de nombre se utilizan para impedir las confusiones del analizador con respecto a nombres de etiquetas de elementos que sean iguales.
Un nodo de comentario contiene un comentario sobre cuestiones que interesan al redactor del documento y suelen referirse a aclaraciones o guías de uso. Tiene nodo padre pero no tienen nodos hijo. El valor de cadena de un nodo comentario es el contenido del comentario.
Ejemplo nº4 Comentarios
<?xml version="1.0" encoding="UTF-8"?> <!-- New document created with EditiX at Wed Jun 13 17:09:14 BST 2012 --> <comentario> <!--Representamos mediante atriburos tres bolas: una mía, otra tuya y otra suya: la primera es roja, la segunda es amarilla y la tercera es verde--> <!--Este es comentario. Suele aclarar aspectos del documento para ayudar a su comprensión--> </comentario>
Un nodo instrucción de procesamiento representa una instrucción de procesamiento. Tiene nodo padre pero no tiene nodos hijo. El valor de cadena de un nodo instrucción de procesamiento es el contenido de la instrucción.
En el ejemplo nº1 hay un ejemplo de instrucción de procesamiento
No hay comentarios:
Publicar un comentario