La librería XML
permite parsear documentos XML, iterar por los elementos que los componen y aplicar transformaciones XSLT.
XPath
Para referenciar a partes concretas dentro de un documento XML se utiliza el estándar de rutas XPath.
Para poder hacer referencia a las variables de los distintos ámbitos que ofrece una aplicación web dentro de una expresión XPath se utiliza $
<variable>, $param:
, $header:
, $cookie
:, $initParam:
, $pageScope:
, $requestScope:
, $sessionScope:
y $applicationScope:
.
$applicationScope:libros/libro[1]
La expresión de ejemplo anterior hace referencia a un nodo XML almacenado en la variable de aplicación libros
, y sobre la que se aplica la ruta XPath libros/libro[1]
:
Acciones
De forma general las acciones para las que no se especifica una variable donde almacenar el resultado lo añaden a la respuesta de la petición en curso a través del Writer
.
– x:parse: Parsea un documento XML indicado en un atributo o en el cuerpo de la acción. El resultado del proceso se puede indicar que se devuelva en un atributo varDom
o var
. Cuando se utiliza el primero el resultado es de tipo org.w3c.dom.Document
, mientras que el segundo depende de la implementación del parser utilizado.
<c:import url="agenda.xml" var="xml"/> <x:parse doc="${xml}" var="agenda"/>
– x:out: Admite una expresión XPath, la evalúa, y añade el resultado a la respuesta de la petición en curso.
<x:out select="$agenda/contactos" escapeXml="true"/>
– x:set: Admite una expresión XPath, la evalúa, y devuelve el resultado en una variable.
<x:set select="$agenda/contactos/contacto[1]" var="contacto"/>
– x:if: Admite una condición sobre una expresión XPath, la evalúa, y comprueba si la condición se cumple.
<x:if select="$contacto/ciudad='Paris'"> Parisino </x:if>
– x:choose: Admite un conjunto de condiciones sobre expresiones XPath en su cuerpo, las evalúa, y procesa el cuerpo de la condición que se cumple, o una por defecto si existe.
<x:choose> <x:when select="$contacto/ciudad='Paris'"> Parisino </x:when> <x:when select="$contacto/ciudad='Madrid'"> Madrileño </x:when> <x:otherwise> Desconocido </x:otherwise> </x:choose>
– x:forEach: Itera por los elementos devueltos por la evaluación de una expresión XPath dada. Su funcionamiento es similar a la acción if
de la librería core
, admite unos atributos similares para controlar la iteración y el nodo en curso.
<table> <x:forEach select="$agenda/contactos/contacto" var="contacto"> <tr><td><x:out select="$contacto/nombre"/></td></tr> </x:forEach> </table>
– x:transform: Permite aplicar una plantilla de transformación sobre un documento XML. Esta acción admite bastantes parámetros y es recomendable leer la documentación de referencia para sacar un mayor provecho de la misma.
<c:import url="documento.xml” var="doc"/> <c:import url="plantilla.xsl" var="xslt"/> <x:transform doc="${doc}" xslt="${xslt}"/>