Compartir a través de


Función id

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>

Vea también

Referencia

Referencia de tipos de datos XML