Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Selecciona elementos según su id. único.
node-set id(object)
Comentarios
Cuando el argumento es de conjunto de nodos, el resultado es la unión del resultado de aplicar id() al valor de cadena de cada uno de los nodos del argumento de conjunto de nodos.
Cuando el argumento es de otro tipo, se convierte a una cadena y luego se divide en una lista de símbolos separados por espacios en blanco (un espacio en blanco es cualquier secuencia de caracteres que coincide con la producción). El resultado es un conjunto de nodos que incluye los elementos del mismo documento que el nodo de contexto que tiene un id. único igual a cualquiera de los símbolos de la lista.
Ejemplo
Archivo XML (test.xml)
<?xml version="1.0"?>
<!DOCTYPE test [
<!ELEMENT test (x+)>
<!ELEMENT x (x+| y+)>
<!ATTLIST x
a ID #REQUIRED>
<!ELEMENT y ANY>
]>
<test>
<x a="a11">
<x a="a21">
<x a="a31">
<y>y31</y>
<y>y32</y>
</x>
</x>
</x>
<x a="a12">
<x a="a22">
<y>y21</y>
<y>y22</y>
</x>
</x>
<x a="a13">
<y>y11</y>
<y>y12</y>
</x>
<x a="a14">
<y>y03</y>
<y>y04</y>
</x>
</test>
Archivo XSLT (test.xsl)
<?xml version='1.0'?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" omit-xml-declaration="yes"/>
<!-- suppress text nodes not covered in subsequent template rule -->
<xsl:template match="text()"/>
<xsl:template match="*">
<xsl:element name="{name()}">
<xsl:apply-templates select="*|@*"/>
<xsl:if test="text()">
<xsl:value-of select="."/>
</xsl:if>
</xsl:element>
</xsl:template>
<xsl:template match="@*">
<xsl:attribute name="{name()}">
<xsl:value-of select="."/>
</xsl:attribute>
</xsl:template>
<xsl:template match="/test">
<xsl:apply-templates select="id('a21') "/>
and
<xsl:apply-templates select="id('a11')//y[1]"/>
</xsl:template>
</xsl:stylesheet>
Resultados
La hoja de estilos XSLT, cuando se aplica al archivo XML anterior, produce el siguiente node-set:
<x a="a21">
<x a="a31">
<y>y31</y>
<y>y32</y>
</x>
</x>
and
<y>y31</y>