Concepto
XPath es un estándar W3C diseñado especialmente para navegar y localizar nodos dentro de documentos XML y constituye la base fundamental de XSLT. Todas las expresiones dentro de select="" y test="" en XSLT utilizan XPath.
- Localizar nodos mediante expresiones de ruta
- Más de 100 funciones estándar integradas: operaciones de cadena, cálculos numéricos, comparación de fechas, procesamiento de nodos, operaciones lógicas, etc.
7 tipos de nodo
Nodo de documento (nodo raíz), nodo elemento, nodo atributo, nodo texto, nodo comentario, nodo instrucción de procesamiento, nodo espacio de nombres.
Ejemplo:
<title lang="eng">Harry Potter</title>
<title>→ Nodo elementolang="eng"→ Nodo atributoHarry Potter→ Nodo texto
Concepto
- Valor atómico (Atomic value): Contenido de nodo sin hijos ni padres, por ejemplo
eng,29.99 - Elemento(Item): Elemento = nodo o valor atómico
Relaciones entre nodos XML
Tomemos como ejemplo <bookstore><book><title></title></book></bookstore>
- Padre(Parent): Cada elemento y cada atributo tiene un único nodo padre;
bookes el padre detitle - Hijos(Children): Un elemento puede tener varios nodos hijos;
titleypriceson hijos debook - Hermanos(Sibling): Comparten el mismo nodo padre; title y price del mismo nivel son hermanos entre sí
- Antepasado(Ancestor): El padre, el padre del padre y todos los nodos superiores; los antepasados de
titleson book y bookstore
Expresiones de ruta
Seleccionar nodos XML mediante rutas y pasos
<bookstore>
<book>
<title lang="eng">Harry Potter</title>
<price>29.99</price>
</book>
</bookstore>Lenguaje del código: HTML, XML (xml)
| Expresión | Significado |
|---|---|
bookstore | Selecciona el elemento bookstore bajo la raíz |
/bookstore | Ruta absoluta, empieza la coincidencia desde el nodo raíz |
bookstore/book | Selecciona todos los elementos hijos book dentro de bookstore |
//book | Elementos book en cualquier parte del documento (búsqueda global) |
//@lang | Selecciona todos los nodos atributo de nombre lang |
Función XPath:position()
<xsl:value-of select="position()" />Lenguaje del código: HTML, XML (xml)
position() es una función integrada de XPath, devuelve el número de secuencia del nodo actual dentro del conjunto de nodos, la cuenta empieza en 1.
Ejemplo: imprimir números de secuencia
<?xml version="1.0" encoding="gb2312"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<head></head>
<body>
<ul>
<!--Recorrer todos los estudiantes class/student -->
<xsl:for-each select="class/student">
<xsl:sort select="age"/> <!--Orden ascendente por edad-->
<!--Filtrar estudiantes con altura >160-->
<xsl:if test="height > 160">
<li>
<xsl:value-of select="position()" />、<!--Imprimir número de secuencia-->
<xsl:value-of select="name"/>;
<!--Evaluación de múltiples condiciones-->
<xsl:choose>
<xsl:when test="height > 200">
<b><xsl:value-of select="age"/></b>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="age"/>
</xsl:otherwise>
</xsl:choose>
</li>
</xsl:if>
</xsl:for-each>
</ul>
</body>
</html>
</xsl:template>
</xsl:stylesheet>Lenguaje del código: HTML, XML (xml)
XPath
Previous: Múltiples ramas