XPath

XPath

XPath (XML Path Language) es un lenguaje que permite construir expresiones que recorren y procesan un documento XML. La idea es parecida a las expresiones regulares para seleccionar partes de un texto sin atributos (plain text). XPath permite buscar y seleccionar teniendo en cuenta la estructura jerárquica del XML. XPath fue creado para su uso en el estándar XSLT, en el que se usa para seleccionar y examinar la estructura del documento de entrada de la transformación.

Contenido

Introducción

Todo el procesamiento realizado con un fichero XML está basado en la posibilidad de direccionar o acceder a cada una de las partes que lo componen, de modo que podamos tratar cada uno de los elementos de forma diferenciada.

El tratamiento del fichero XML comienza por la localización del mismo a lo largo del conjunto de documentos existentes en el mundo. Para llevar a cabo esta localización de forma unívoca, se utilizan los URI (Uniform Resource Identifiers), de los cuales los URL (Uniform Resource Locators) son sin duda los más conocidos.

Una vez localizado el documento XML, la forma de seleccionar información dentro de él es mediante el uso de XPath, que es la abreviación de lo que se conoce como XML Path Language. Con XPath podremos seleccionar y hacer referencia a texto, elementos, atributos y cualquier otra información contenida dentro de un fichero XML.

XPath en sí es un lenguaje sofisticado y complejo, pero distinto de los lenguajes procedurales que solemos usar (C, C++, Basic, Java...). Además, como casi todo en el mundo de XML, aún está en estado de desarrollo, por lo que no es fácil encontrar herramientas que incorporen todas sus funcionalidades.

XPath es a su vez la base sobre la que se han especificado nuevas herramientas que aprovechar para el tratamiento de documentos XML. Herramientas tales como XPointer, XLink y XQuery (el lenguaje que maneja los documentos XML como si de una base de datos se tratase). Así, XPath sirve para decir cómo debe procesar una hoja de estilo el contenido de una página XML, pero también para poder poner enlaces o cargar en un navegador zonas determinadas de una página XML, en vez de toda la página.

El modelo de datos de XPath

Un documento XML es procesado por un analizador (o parser) construyendo un árbol de nodos. Este árbol comienza con un elemento raíz, que se diversifica a lo largo de los elementos que cuelgan de él y acaba en nodos hoja, que contienen solo texto, comentarios, instrucciones de proceso o incluso que están vacíos y solo tienen atributos.

La forma en que XPath selecciona partes del documento XML se basa precisamente en la representación arbórea que se genera del documento. De hecho, los "operadores" de que consta este lenguaje nos recordarán la terminología que se utiliza a la hora de hablar de árboles en informática: raíz, hijo, ancestro, descendiente, etc.

Un caso especial de nodo son los nodos atributo. Un nodo puede tener tantos atributos como desee, y para cada uno se le creará un nodo atributo. No obstante, dichos nodos atributo NO se consideran como hijos suyos, sino más bien como etiquetas añadidas al nodo elemento.

A continuación se muestra un ejemplo de cómo se convierte en árbol un documento XML. Este mismo ejemplo será usado a lo largo de todo el tutorial. En primer lugar se muestra el documento XML y a continuación el árbol que genera.

Documento XML :

 <libro>
 
   <titulo>Dos por tres calles</titulo>
 
   <autor>Josefa Santos</autor>
 
   <capitulo num="1">
      La primera calle
  
     <parrafo>
       Era una sombría noche del mes de agosto...
     </parrafo>
   
     <parrafo destacar="si">
        Ella, inocente cual 
        <enlace href="enlace">mariposa</enlace> 
        que surca el cielo en busca de libaciones...
     </parrafo>
 
   </capitulo>
 
   <capitulo num="2" public="si">
     La segunda calle
 
     <parrafo>
        Era una obscura noche del mes de septiembre...
     </parrafo>
 
     <parrafo>
        Ella, inocente cual 
        <enlace href="enlace">abejilla</enlace> 
        que surca el viento en busca del néctar de las flores...
     </parrafo>
 
   </capitulo>
 
   <apendice num="a" public="si">
     La tercera calle
 
     <parrafo>
        Era una densa noche del mes de diciembre...
     </parrafo>
 
     <parrafo>
        Ella, cándida cual 
        <enlace href="enlace">abejilla</enlace> 
        que surca el espacio en busca de bichejos para comer...
     </parrafo>
   </apendice>
 </libro>


Árbol generado :

 /
 +---libro
       |
       +---título
       |     |
       |     +---(texto)Dos por tres calles
       |
       +---autor
       |     |
       |     +---(texto)Josefa Santos
       |
       +---capitulo [num=1]
       |      |
       |      +---(texto)La primera calle
       |      |
       |      +---parrafo
       |      |     |
       |      |     +---(texto)Era una sombría noche ...
       |      |     
       |      +---parrafo [destacar=si]
       |            |
       |            +---(texto)Ella, cual inocente
       |            |
       |            +---enlace [href=enlace]
       |            |     |
       |            |     +---(texto)mariposa
       |            |
       |            +---(texto)que surca el cielo en busca de libaciones...
       |
       +---capitulo [num=2, public=si]
              |
              +---(texto)La segunda calle
              |
              +---parrafo
              |     |
              |     +---(texto)Era una obscura noche ...
              |     
              +---parrafo
                    |
                    +---(texto)Ella, cual inocente abeja...


Tipos de Nodos

Existen distintos tipos de nodos en un árbol generado a partir de un documento XML, a saber: raíz, elemento, atributo, texto, comentario e instrucción de procesamiento (respectivamente; root, elements, attribute, text, comment y processing instruction).Todo esto es muy beneficioso.

Nodo Raíz

Se identifica por /. No se debe confundir el nodo raíz con el elemento raíz del documento. Así, si el documento XML de nuestro ejemplo tiene por elemento raíz a libro, éste será el primer nodo que cuelgue del nodo raíz del árbol, el cual es: /.

Insisto: / hace referencia al nodo raíz del árbol, pero no al elemento raíz del documento XML, por más que un documento XML solo pueda tener un elemento raíz. De hecho, podemos afirmar que el nodo raíz del árbol contiene al elemento raíz del documento.

Nodo Elemento

Cualquier elemento de un documento XML se convierte en un nodo elemento dentro del árbol. Cada elemento tiene su nodo padre. El nodo padre de cualquier elemento es, a su vez, un elemento, excepto el elemento raíz, cuyo padre es el nodo raíz. Los nodos elemento tienen a su vez hijos, que son: nodos elemento, nodos texto, nodos comentario y nodos de instrucciones de proceso. Los nodos elemento también tienen propiedades tales como su nombre, sus atributos e información sobre los "espacios de nombre" que tiene activos.

Una propiedad interesante de los nodos elemento es que pueden tener identificadores únicos (para ello deben ir acompañados de un DTD que especifique que dichos atributos toman valores únicos), esto permite referenciar a dichos elementos de una forma mucho más directa.

Nodos texto

Por texto vamos a hacer referencia a todos los caracteres del documento que no están marcados con alguna etiqueta. Un nodo texto no tiene hijos, es decir, los distintos caracteres que lo forman no se consideran hijos suyos.

Nodos atributo

Como ya hemos indicado, los nodos atributo no son tanto hijos del nodo elemento que los contiene como etiquetas añadidas a dicho nodo elemento. Cada nodo atributo consta de un nombre, un valor (que es siempre una cadena) y un posible "espacio de nombres".

Aquellos atributos que tienen por valor el valor por defecto asignado en el DTD se tratarán como si el valor se les hubiese asignado al escribir el documento XML. Al contrario, no se crea nodo para atributos no especificados en el documento XML, y con la propiedad #IMPLIED definida en su DTD. Tampoco se crean nodos atributo para las definiciones de los espacios de nombre. Todo esto es normal si tenemos en cuenta que no es necesario tener un DTD para procesar un documento XML.

Nodos comentario y de instrucciones de proceso

Aparte de los nodos indicados, en el árbol también se generan nodos para cada nodo con comentarios y con instrucciones de proceso. Al contenido de estos nodos se puede acceder con la propiedad string-value.

Enlaces externos


Wikimedia foundation. 2010.

Игры ⚽ Нужно решить контрольную?

Mira otros diccionarios:

  • XPath 1.0 — XPath (XML Path Language) is a language for selecting nodes from an XML document. In addition, XPath may be used to compute values (strings, numbers, or boolean values) from the content of an XML document. The current version of the language is… …   Wikipedia

  • XPath — est un langage (non XML) pour localiser une portion d un document XML. Initialement créé pour fournir une syntaxe et une sémantique aux fonctions communes à XPointer et XSL, XPath a rapidement été adopté par les développeurs comme langage d… …   Wikipédia en Français

  • XPath 2.0 — is the current version of the XPath language defined by the World Wide Web Consortium, W3C. It became a recommendation on 23 January 2007.XPath is used primarily for selecting parts of an XML document. For this purpose the XML document is… …   Wikipedia

  • Xpath — (XML Path Language) язык запросов к элементам XSLT, и является стандартом консорциума W3C. В XPath используется компактный синтаксис, отличный от принятого в XML. В 2007 году завершилась разработка версии 2.0, которая теперь является составной… …   Википедия

  • XPath — es un lenguaje (basado en XML) que permite seleccionar subconjuntos de un documento XML. La idea es parecida a las expresiones regulares para seleccionar partes de un texto sin atributos (plain text). XPath permite buscar y seleccionar teniendo… …   Enciclopedia Universal

  • XPath — Die XML Path Language (XPath) ist eine vom W3 Konsortium entwickelte Abfragesprache, um Teile eines XML Dokumentes zu adressieren. XPath dient als Grundlage einer Reihe weiterer Standards wie XSLT, XPointer und XQuery. Seit ihrer Verabschiedung… …   Deutsch Wikipedia

  • XPATH — Die XML Path Language (XPath) ist eine vom W3 Konsortium entwickelte Abfragesprache, um Teile eines XML Dokumentes zu adressieren. XPath dient als Grundlage einer Reihe weiterer Standards wie XSLT, XPointer und XQuery. Seit ihrer Verabschiedung… …   Deutsch Wikipedia

  • XPath — Infobox programming language name = XPath paradigm = query language year = 1999 designer = developer = W3C latest release version = 2.0 latest release date = January 23 2007 typing = implementations = JavaScript, C#, Java dialects = influenced by …   Wikipedia

  • XPath — Эта статья или раздел нуждается в переработке. Пожалуйста, улучшите статью в соответствии с правилами написания статей. XPath (XML Path Language)  я …   Википедия

  • Xpath data model — XPath is a language for selecting portions of an XML Document (sequences of nodes of an XML tree). XPath uses a specific conceptual interpretation XML documents, referred to as the XPath Data Model. Technical documents on XML often uses the same… …   Wikipedia

Compartir el artículo y extractos

Link directo
Do a right-click on the link above
and select “Copy Link”