Usando XPath con PHP

Deje que XPath haga el trabajo duro por usted al trabajar con XML

Si sus aplicaciones de PHP se desempeñan más allá de operaciones de CRUD, es muy probable que haya trabajado con XML. Navegar un documento de XML o una secuencia de datos para los elementos de datos deseados puede ser agobiante, duro, e incluso de alguna forma intimidante para los desarrolladores de PHP. Puede ser especialmente abrumador cuando la estructura de datos XML es compleja. XPath es un estándar de W3C cuyo único propósito es ese — llegar al elemento de datos correcto o, específicamente, el nodo deseado. PHP soporta XPath como parte de sus clases y funciones de XML. En este artículo usted explora algunos escenarios básicos para ubicar información en XML y cómo XPath puede hacer el trabajo duro en sus aplicaciones de PHP.

Tracy Bost, Consultant and Trainer, Freelance

Author photo - Tracy BostTracy Bost es un experimentado desarrollador de software e ingeniero de sistemas.Su especialidad es la integración de aplicaciones empresariales. Ha trabajado en el pasado como co-presidente del grupo de trabajo de Normas Empresariales de Mortgage Industry Standards Maintenance Organization (MISMO) y como co-presidente del comité para estándares de la industria de RuleML2010. Ha trabajado en varias industrias, incluyendo hipotecas, bienes raíces y el sector no lucrativo.



05-03-2012

Acrónimos de uso frecuente

  • API: Interfaz de programación de aplicaciones
  • CRUD: Crear, Leer, Actualizar y Suprimir
  • CSS: Hojas de estilo en cascada
  • DOM: Document Object Model
  • JSON: JavaScript Object Notation
  • RDF: Resource Description Framework
  • REST: Transferencia de Estado Representacional
  • RSS: Really Simple Syndication
  • SKU: Stock-keeping unit
  • URI: Identificador Uniforme de Recurso
  • W3C: World Wide Web Consortium
  • XHTML: Extensible Hypertext Markup Language
  • XPath: XML Path Language
  • XSL: Extensible Stylesheet Language
  • XSLT: Extensible Stylesheet Language Transformation

En este artículo, aprenda sobre estos conceptos:

  • Usos para XPath
  • Escribir expresiones básicas de XPath
  • Usar la funcionalidad de XPath de las bibliotecas XML de PHP
  • Usar XPath y PHP para transformar formatos de datos

Este artículo tiene muchos ejemplos funcionales usando XPath con PHP que puede practicar, asumiendo que tiene las habilidades de requisitos previos descritas en Prerrequisitos.

Requisitos Previos

Para aprovechar al máximo este artículo, debe tener conocimientos de XML y PHP5 junto con la configuración e instalación de extensiones de PHP. Además, necesita acceso a y un conocimiento funcional de un sistema operativo basado en UNIX®o Microsoft® Windows® con un servidor web que soporte PHP5 en el cual pueda practicar los ejemplos de código cubiertos en este artículo.


Entendiendo la necesidad de XPath

A medida que la web se mueve hacia la visión original de la web semántica, las aplicaciones se vuelven más interactivas unas con otras. Tecnologías tales como SOAP, REST, RSS, RDF y otras son habilitadores poderosos para la web del futuro. En su mayor parte, XML es el formato de mensaje elegido para describir los datos involucrados. Hasta cierto punto, puede usar JSON, puedo probablemente verá a XML como el método predominante para el intercambio de datos.

O tal vez enfrente la tarea de transformar datos de XML en XHTML para entregar una interfaz atractiva, interactiva y utilizable para usuarios móviles y diversos navegadores web.

Almacenar datos como documentos de XML en un sistema de archivos o una base de datos compatible con XML es también una forma popular de archivar datos para su recuperación posterior para tareas tales como informes, visualización de interfaz de usuario o trabajar con la integración de aplicaciones.

Al trabajar con datos de XML, necesita analizar los datos para llegar al denominador menos común—los datos deseados (o al valor de nodo atómico, como es frecuentemente llamado). XSLT es un estándar de W3C que realizar la transformación de XML en otro formato como HTML, PDF o incluso otro documento de XML que use un esquema distinto. Es altamente dependiente del uso de XPath, como lo son XQuery, XForms y XPointer.


Segundo plano de XPath

En su forma más simple, XPath es un lenguaje para navegar un árbol de XML en la memoria. Originalmente, XPath fue diseñado como un lenguaje para XSLT y XPointer. XPath 1.0 se volvió el estándar de W3C en 1999. El más reciente XPath 2.0 obtuvo el estado de especificación en 2007.

A medida que otras especificaciones para XML han surgido, también se ha incrementado el uso de XPath. Hoy, XPath es el lenguaje de preferencia para navegar XML en esquemas XML, ISO Schematron, XQuery y XForms. Irónicamente, pero por una buena razón, XPath no está basado en la sintaxis de XML. Usa su propia sintaxis para evitar colisiones con URIs y otra sintaxis relacionada con XML.

A medida que trabaja con XPath en PHP, sólo recuerde que usted no usa XPath solo. Lo usa como una herramienta para navegar el XML en la memoria mientras trabaja con una de las otras especificaciones de XML.

Para el propósito de este artículo, yo uso la especificación más ampliamente utilizada XPath 1.0 en la discusión y en los ejemplos. XPath 2.0 es compatible con XPath 1.0, pero actualmente PHP tiene soporte limitado para XPath 2.0.

La especificación de XPath proporciona una descripción detallada para su uso y terminología estándar. Si usted anticipa un uso complejo de XPath con PHP, esta especificación es un punto de referencia confiable. De otra manera, la especificación de XPath puede ser resumida en cuatro áreas principales de interés, como se describe en la Tabla 1.

Tabla 1. Cuatro áreas principales de la especificación de XPath
ÁreaDescripciónEjemplos
Rutas de ubicaciónContiene etapas, ejes, predicados y sintaxis abreviada de ubicación.parent::node, child::text(), attribute::*, /PRODUCTS/PRODUCT[3]/NAME
Modelo de datosDescribe el XML como un árbol. Contiene nodos para raíz, atributos, texto, espacios de nombres, elementos, instrucciones de procesamiento y comentarios./, /ns1:PRODUCTS/ns1:PRODUCT, @category
ExpresionesPuede contener referencias de variable, funciones, booleanos, números, series y predicados./PRODUCTS/PRODUCT/NAME[string-length( ) > 15]/../@category
FuncionesXPath 1.0 tiene 27 funciones incorporadas que están categorizadas como conjunto de nodos, serie, booleano o funciones de número.string-length(), true(), sum()

Escribiendo expresiones de XPath

Antes de escribir código de PHP, tómese un tiempo para revisar los nodos de XPath, las rutas y las funciones. El archivo products.xml en el Listado 1 proporciona ejemplos de algunas expresiones comúnmente utilizadas para ubicar datos en una ruta de XML basada en predicados, ubicar los valores atómicos de nodos y hacer uso de funciones.

Listado 1. Un documento XML de productos de muestra (products.xml)
<?xml version="1.0" encoding="UTF-8"?>
<PRODUCTS>
<PRODUCT category="software">
<SKU>soft32323</SKU>
<SUB_CATEGORY>Business Analysis</SUB_CATEGORY>
<NAME>Widget Reporting</NAME>
<PRICE>4500</PRICE>
</PRODUCT>
<PRODUCT category="software">
<SKU>soft32323</SKU>
<SUB_CATEGORY>Business Analysis</SUB_CATEGORY>
<NAME>Pro Reporting</NAME>
<PRICE>2300</PRICE>
</PRODUCT>
<PRODUCT category="storage">
<SKU>soft32323</SKU>
<SUB_CATEGORY>Tape Systems</SUB_CATEGORY>
<NAME>Tapes Abound</NAME>
<PRICE>2300</PRICE>
</PRODUCT>
<PRODUCT category="storage">
<SKU>soft32323</SKU>
<SUB_CATEGORY>Disk Systems</SUB_CATEGORY>
<NAME>Widget100 Series</NAME>
<PRICE>6500</PRICE>
</PRODUCT>
</PRODUCTS>

/PRODUCTS retorna todos los nodos que son hijos del nodo PRODUCTS , de los cuales hay cuatro. Preste atención al símbolo de barra inclinada (/). Si está familiarizado con sistemas operativos basados en UNIX, sabe que la barra inclinada representa la ruta absoluta. Como en las rutas de archivo de UNIX, usted puede usar una ruta absoluta cuando tenga dudas sobre su ubicación de contexto actual. Para el documento en elListado 1, PRODUCTS es el nodo de raíz.

Las rutas relativas también trabajan con XPath. Cuando usted usa .. en una expresión, esto instruye a la expresión para que elabore un nivel del nodo actual en la jerarquía (de nuevo, similar a trabajar con directorios en sistemas operativos de UNIX). Por ejemplo, ../PRODUCT/SKU retorna el valor de nodo atómico para los cuatro números de SKU asociados con cada nodo de PRODUCT .

Seleccionar un nodo de atributo requiere una sintaxis especial en XPath. Si desea retornar todos los nodos de PRODUCT que están listados en la categoría de software, la expresión /PRODUCTS/PRODUCT[@category='software'] hace justamente eso. En esta expresión, category es considerado un atributo en el documento XML. XPath puede seleccionar atributos con el símbolo de arroba (@). Alternativamente, usted puede seleccionar un atributo usando la sintaxis attribute:: en tal forma que la expresión es /PRODUCTS/PRODUCT[attribute::category='software']. La mayoría se da cuenta de que el símbolo de arroba es menos verboso y más fácil de usar.

Para seleccionar los valores de nodo atómico (es decir, el valor de texto real) de todos los nombres de producto para los productos que cuesten más de US$ 2.500, puede escribir la expresión como /PRODUCTS/PRODUCT[PRICE > 2500]/NAME. Cuando es ejecutada, esta expresión retorna los nombres de producto Widget Reporting y Widget100 Series.

Observe un último ejemplo de expresión antes de comenzar a usar XPath con PHP: /PRODUCTS/PRODUCT/NAME[string-length( ) > 15]/../@category. Cuando es ejecutada, esta expresión retorna dos valores: software y storage. Específicamente, esta expresión coincide el valor de categoría para cada producto que tenga un nombre de más de 15 caracteres de longitud.

El documento XML en el Listado 1 es el documento de origen para las expresiones de XPath que son demostradas en este artículo.


Descubriendo el soporte de XPath en PHP

Que PHP soporta XML y XPath no debe ser una sorpresa. De hecho, el lenguaje de scripts más popular ofrece algunas buenas funciones para trabajar con XPath en sus bibliotecas centrales.

En las bibliotecas centrales de PHP, usted tiene algunas opciones al trabajar con XML:

  • SimpleXML
  • DOM
  • XMLWriter/Reader

SimpleXML es fácil de usar y puede ser adecuado para tareas relacionadas con XML que sean relativamente simples. Tiene algunas limitaciones; por ejemplo, no soporta completamente la validación, la escritura y los espacios de nombres. Si está procesando un árbol grande de datos de XML, tenga en mente que SimpleXML carga todo el árbol del documento XML en la memoria antes del procesamiento.

Si necesita realizar expresiones de XPath más complejas y necesita control total del documento, DOM es una opción. DOM son las iniciales de Document Object Model, que es un estándar de W3C. Puede habilitar DOM con PHP al instalarlo como una extensión. Las extensiones como DOM son normalmente fáciles de instalar y habilitar. Muchas veces sólo se trata de dejar de comentar una sola línea en su archivo php.ini para habilitar el módulo ya compilado. Igual que SimpleXML, DOM carga el árbol del documento XML completo en la memoria antes del procesamiento. Como verá más adelante en este artículo, DOMXPath también es muy cómodo para usarse.

También puede descargar e instalar XML_XPath desde el repositorio de PHP Extension and Application Repository (PEAR). Esta clase usa DOM y proporciona una forma de consultar usando XPath para manipulación de documentos y extrayendo valores de nodo atómico.

Si trabaja con Zend Framework, una biblioteca Zend_Dom_Query está disponible. Si su infraestructura de PHP particular no proporciona clases o funciones especiales para XML y XPath, puede simplemente usar lo que PHP ya proporciona.

XMLWriter/Reader no soporta directamente XPath sin la ayuda de SimpleXML o DOMXPath, así que no está cubierto con más profundidad en este artículo.

Sin importar qué biblioteca o infraestructura usted use, entender cómo crear expresiones de XPath es esencial para obtener el potencial completo. Al usar XPath con bibliotecas relacionadas con XML de PHP, la sintaxis de XPath es la misma. Los siguientes ejemplos y demostraciones usan una combinación de DOM y SimpleXML.


Trabajando con XPath en PHP

Con el archivo products.xml de muestra del Listado 1 y la API de SimpleXML de PHP5, usted puede experimentar con diversas expresiones de XPath.

Cuando ejecuta el código en el Listado 2, el resultado es un volcado de todo el archivo XML, en una matriz, por supuesto. La expresión de XPath /PRODUCTS resulta en una coincidencia de todos los nodos que sean hijos del nodo raíz (PRODUCTS).

Listado 2. Usando SimpleXML para mostrar todos los nodos en una matriz
<?php
$xml = simplexml_load_file("products.xml");
$products = $xml->xpath("/PRODUCTS");
print_r($products);
 ?>
------------------------------------------------------------
OUTPUT:

Array ( [0] => SimpleXMLElement Object ( [PRODUCT] => 
Array ( [0] => SimpleXMLElement Object
( [@attributes] => Array ( [category] => software ) [SKU] =>
soft1234 [SUB_CATEGORY] => 
Business Analysis [NAME] => Widget Reporting [PRICE] => 4500 ) [1] => 
SimpleXMLElement Object 
( [@attributes] => Array ( [category] => software ) [SKU] => soft5678
[SUB_CATEGORY] =>
Business Analysis [NAME] => Pro Reporting [PRICE] => 2300 ) [2] => 
SimpleXMLElement Object
( [@attributes] => Array ( [category] => storage ) [SKU] => 
stor01010 [SUB_CATEGORY] => Tape Systems [NAME] => 
Tapes Abound [PRICE] => 1900 ) 
[3] => SimpleXMLElement Object ( [@attributes] => 
Array ( [category] => storage ) [SKU] => 
stor23232 [SUB_CATEGORY] => Disk Systems [NAME] => 
Widget100 Series [PRICE] => 6500 ) ) ) )

Cuando ejecuta el código en el Listado 3, el resultado es una salida de raíz del valor de cada nodo de NAME del árbol de XML. Observe cómo la expresión /PRODUCTS/PRODUCT/NAME ubica todos los nodos con los que coincide en el árbol de XML, a diferencia de sólo el primero o el último.

Listado 3. Usando SimpleXML para mostrar todos los nombres de producto en una matriz
<?php
$xml = simplexml_load_file("products.xml");
$products = $xml->xpath("/PRODUCTS/PRODUCT/NAME");
print_r($products);
 ?>
------------------------------------------------------------
OUTPUT:

Array ( [0] => SimpleXMLElement Object ( [0] => Widget Reporting ) 
[1] => SimpleXMLElement Object ( [0] => Pro Reporting ) [2] => 
SimpleXMLElement Object ( [0] => Tapes Abound ) [3] => 
SimpleXMLElement Object ( [0] => Widget100 Series ) )

Si necesita el valor de un nodo o nodos particulares con base en algún criterio, siga los ejemplos en los Listados 4 y 5.

Ubicar un valor de nodo atómico es extraer valores deseados del documento de XML. Cuando ejecuta el código en el Listado 4, el resultado es el valor atómico de un nodo.

Listado 4. Usando SimpleXML para mostrar el nombre de un producto para un SKU particular
<?php
$xml = simplexml_load_file("products.xml");
$products = $xml->xpath("/PRODUCTS/PRODUCT[SKU='soft5678']/NAME");
print_r($products);
 ?>
------------------------------------------------------------
OUTPUT:

Array ( [0] => SimpleXMLElement Object ( [0] => Pro Reporting ) )

La expresión de XPath /PRODUCTS/PRODUCT[SKU='soft5678']/NAME especifica todos los nodos que coinciden con la expresión. En este caso, sólo un producto tiene la coincidencia de número de SKU. Si necesita ubicar el valor de un nodo respecto a su relación con su posición en el árbol de XML, puede usar la función position() .

Puede usar expresiones condicionales en XPath para identificar aún más la ubicación de nodos específicos. El Listado 5 muestra un ejemplo de esto usando SimpleXML y XPath con una expresión condicional.

Listado 5. Usando SimpleXML para ubicar productos con base en un condicional
<?php
$xml = simplexml_load_file("products.xml");
$products = $xml->xpath("/PRODUCTS/PRODUCT[@category='software' and PRICE > 2500]"); 
print_r($products);
 ?>
------------------------------------------------------------
OUTPUT:

Array ( [0] => SimpleXMLElement Object ( [@attributes] => 
Array ( [category] => software ) 
[SKU] => soft1234 [SUB_CATEGORY] => Business Analysis [NAME] =>
 Widget Reporting [PRICE] => 4500 ) )

Tal vez haya notado que los Listados 2, 3, 4 y 5 tienen exactamente el mismo código de PHP — la única diferencia son las expresiones de XPath. Cuando domine las etapas usando SimpleXML, tendrá el poder completo del lenguaje de XPath disponible para usted. Las etapas tomadas con el código de PHP al usar SimpleXML son resumidas de la siguiente manera:

  1. Cargue el archivo XML en la memoria.
  2. Escriba y ejecute la expresión de XPath usando la clase Object->xpath.
  3. Manipule los nodos y valores coincidentes usando sus habilidades de PHP.

El resultado de salida en cada listado es la sentencia print_r($products); . Esta vuelca el valor para mostrarse como una matriz. En realidad, muy probablemente tomará el resultado y realizará alguna operación en ella usando PHP.

El Listado 6 usa DOM y DOMXPath para trabajar con XML y XPath.

Listado 6. Usando DOMXPath para mostrar el nombre de un producto para un SKU particular
<?php

$doc = new DOMDocument;
$doc->load('products.xml');
$xpath = new DOMXPath($doc);
$products = $xpath->query("/PRODUCTS/PRODUCT[SKU='soft5678']/NAME");
 
foreach ($products as $product)
{
   print($product->nodeValue);
}
 ?>
------------------------------------------------------------
OUTPUT:

Informes Pro

La secuencia de código de PHP que usa para DOM t DOMXPath no es mucho más compleja que las etapas de SimpleXML. Las etapas en el Listado 6 son resumidas en la siguiente secuencia:

  1. Cargue el archivo XML en la memoria del objeto de DOM.
  2. Cree un objeto de XPath del documento cargado.
  3. Consulte el árbol de XML y retorne un objeto de productos.

De nuevo, cuando se sienta cómodo con ese fragmento de código de PHP usando DOM, usted tendrá XPath disponible para hacer el trabajo duro.


Usando XPath para transformaciones

En realidad, puede transformar XML en XHTML sin usar XSLT. Usted puede expandirse más y volverse más creativo con los ejemplos anteriores usando sólo SimpleXML o DOM y crear sus archivos de XHTML para visualización. Y también puede llegar a sentirse más cómodo con ese enfoque. Sin embargo, considerando que un gran uso de XPath es para transformaciones de XSLT, y que PHP soporta XSLT, es apropiado para demostrar. Además, ¡usar XSLT puede ahorrarle mucho tiempo y frustración!

Transformaciones de XSLT de PHP

Para permanecer enfocado en PHP y XPath, el ejemplo de transformación en esta sección no usa nada de CSS o enlaces de URL válidos. Al transformar datos usando XSLT, tenga en mente que puede incluir estilos, JavaScript o cualquier otra cosa que necesiten sus páginas de HTML típicas. Además, su archivo de XSL muy probablemente estará cuidadosamente organizado en su estructura de aplicación en una forma que se ajuste a su infraestructura.

Un sólido entendimiento de XPath es esencial al trabajar para transformar datos de XML en otros formatos tales como HTML con XSLT.

Los feeds de RSS y Atom están basados en XML, así que XPath es la herramienta ideal para recorrer el feed y seleccionar los datos deseados. Asumiendo que este artículo tiene su propio feed de Atom para diversas técnicas de PHP y XPath, puede usar una de las bibliotecas de XML de PHP para extraer entradas del feed y mostrarlas como lo desee en su website.

Un archivo de XSLT tan simple como el que está en el Listado 7 depende en gran medida de XPath.

Listado 7. Un archivo de XSLT simple que transforma un feed en HTML (article_feed.xsl)
<?xml version='1.0'?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/">
<html>
<head><title><xsl:value-of select="	 //title"/></title></head>
<table>
<tr><td><xsl:value-of select="//title"/></td></tr>
<tr><td><i>"<xsl:value-of select="//subtitle"" />",</i></td></tr>
<tr><td>by <xsl:value-of select="//author"" /></td></tr>
<xsl:for-each select="//feed/entry"">
<table border="1" > 
<tr>
<td>Title</td><td><xsl:value-of select="title""/></td>
</tr>
<tr>
<td>Summary</td><td><xsl:value-of select="summary""/></td>
</tr>
<tr>
</tr>
</table><br/>
</xsl:for-each>
</table>
</html>
</xsl:template>
</xsl:stylesheet>

Las dos diagonales inclinadas (//) instruyen a XPath para que coincida el primer nodo nombrado iniciando en el nodo de raíz. Con sólo un nodo para cada título, subtítulo y autor, este es un atajo para expresar la ruta de ubicación sin ingresar la ruta absoluta. Ya que el para cada bucle funciona en el contexto del nodo //feed/entry , la rutas relativas para el título y el resumen son usadas.

Usando el archivo de XSLT del Listado 7, ahora puede escribir el código de PHP apropiado para realizar la transformación, como en el Listado 8.

Listado 8. Usando DOM para transformación de XLST
<?php
$doc = new DOMDocument();
$xmlStream = <<<MyFeed
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
<title>Using XPath with PHP</title>
<author><name>Tracy Bost</name></author>
<subtitle type="html">
Let XPath do the hard work for you when working with XML</subtitle>
<link rel="self" type="text/html"
hreflang="en" href="http://www.ibm.com/developerworks/"/>
<updated>15 Aug 2011 22:51:48 +0000</updated>
<entry> 
<title>SimpleXML & XPath </title> 
<summary>If you are using SimpleXML to parse XML or
 RSS feeds, XPath is great to use!</summary> 
<link rel="self" type="text/html" hreflang="en" href=""/> 
<published>21 Apr 2011 04:00:00 +0000</published> 
<updated>21 Apr 2011 04:00:00 +0000</updated> 
</entry> 
<entry> 
<title>DOMXPath</title> 
<summary>If you are using DOM for traversal XML documents, 
give DOMXPath a try! </summary> 
<link rel="self" type="text/html" hreflang="en" href=""/> 
<id>tag:developerWorks.dw,19 Apr 2011 04:00:00 +0000</id> 
<published>12 Aug 2011 04:00:00 +0000</published> 
<updated>12 Aug 2011 04:00:00 +0000</updated> 
</entry> 
<entry> 
<title>XMLReader with XPath</title> 
<summary>For complex XML document reading and writing, 
using XPath with XReader can ease your burden!</summary> 
<link rel="self" type="text/html" hreflang="en" href=""/> 
<id>tag:developerWorks.dw,19 Apr 2011 04:00:00 +0000</id> 
<published>08 Aug 2011 04:00:00 +0000</published> 
<updated>08 Aug 2011 04:00:00 +0000</updated> 
</entry> 
</feed> 
MyFeed;

  
$doc->loadXML($xmlStream);
$xpath = new DOMXpath($doc);
$xslt = new XSLTProcessor();
$xsl = new DOMDocument();
$xsl->load( 'xsl/article_feed.xsl', LIBXML_NOCDATA);
$xslt->importStylesheet( $XSL );
print $xslt->transformToXML( $XML );
?>

------------------------------------------------------------
OUTPUT: 

<?xml version="1.0"?>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>Using XPath with PHP</title></head><body><table><tr>
<td>Using XPath with PHP</td></tr><tr>
<td><i>"Let XPath do the hard work for you when working with XML",</i></td>
</tr><tr><td>by Tracy Bost
</td></tr><table border="1"><tr><td>Title</td>
<td>SimpleXML & XPath </td></tr>
<tr><td>Summary</td>
<td>If you are using SimpleXML to parse XML or RSS feeds,
 XPath is great to use!</td>
</tr><tr/></table>
<br/>
<table border="1">
<tr><td>Title</td>
<td>DOMXPath</td>
</tr>
<tr><td>Summary</td>
<td>If you are using DOM for traversal XML documents, 
give DOMXPath a try! </td>
</tr><tr/></table><br/>
<table border="1">
<tr><td>Title</td><td>XMLReader with XPath</td>
</tr>
<tr><td>Summary</td>
<td>For complex XML document reading and writing, 
using XPath with XReader can ease your burden!</td>
</tr><tr/></table><br/>
</table>
</body>
</html>

Observe que el Listado 8 no tiene sentencia $xpath->query()como se demostró en el Listado 6. Todas las expresiones de XPath están ubicadas en el archivo de XSL. Sólo use DOM para importar la hoja de estilo, ¡y después déjelo realizar la transformación!


Resumen

En este artículo, usted fue introducido a XPath y cómo puede usarlo en un entorno de PHP5 cuando trabaja con XML. Como muchas otras bibliotecas disponibles en PHP, las bibliotecas de XML le permiten como desarrollador enfocarse en sus requisitos funcionales en lugar de en la conexión de bajo nivel de clases y objetos. XPath puede ayudar a eliminar la abrumadora tarea de ubicar y analizar datos dentro de XML. Dependiendo de sus necesidades, opcionalmente pude usar SimpleXML, DOM o las bibliotecas de XML de una infraestructura, como Zend Framework. Por suerte, todas ellas trabajan con XPath de W3C en una forma estándar. Entonces, cuando usted carga ese siguiente archivo de XML o secuencia de datos, no tema navegar hacia los valores exactos que necesita para procesar.

Recursos

Aprender

Obtener los productos y tecnologías

Comentar

Comentarios

developerWorks: Ingrese

Los campos obligatorios están marcados con un asterisco (*).


¿Necesita un IBM ID?
¿Olvidó su IBM ID?


¿Olvidó su Password?
Cambie su Password

Al hacer clic en Enviar, usted está de acuerdo con los términos y condiciones de developerWorks.

 


La primera vez que inicie sesión en developerWorks, se creará un perfil para usted. La información en su propio perfil (nombre, país/región y nombre de la empresa) se muestra al público y acompañará a cualquier contenido que publique, a menos que opte por la opción de ocultar el nombre de su empresa. Puede actualizar su cuenta de IBM en cualquier momento.

Toda la información enviada es segura.

Elija su nombre para mostrar



La primera vez que inicia sesión en developerWorks se crea un perfil para usted, teniendo que elegir un nombre para mostrar en el mismo. Este nombre acompañará el contenido que usted publique en developerWorks.

Por favor elija un nombre de 3 - 31 caracteres. Su nombre de usuario debe ser único en la comunidad developerWorks y debe ser distinto a su dirección de email por motivos de privacidad.

Los campos obligatorios están marcados con un asterisco (*).

(Por favor elija un nombre de 3 - 31 caracteres.)

Al hacer clic en Enviar, usted está de acuerdo con los términos y condiciones de developerWorks.

 


Toda la información enviada es segura.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=90
Zone=Linux
ArticleID=799364
ArticleTitle=Usando XPath con PHP
publish-date=03052012