Fonction id

Sélectionne des éléments sur la base de leur ID unique.

node-set id(object)

Notes

Si l'argument est du type node-set, le résultat est l'union du résultat de l'application de id() à la valeur de chaîne de chaque nœud dans l'argument node-set.

Si l'argument est d'un autre type, il est converti en chaîne, puis fractionné en une liste de jetons séparée par des espaces blancs (l'espace blanc est une séquence de caractères correspondant à la production). Par conséquent, une collection de nœuds est créée, contenant les éléments du même document que le nœud de contexte possédant un ID unique identique à celui d'un des jetons de la liste.

Exemple

Fichier 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>

Fichier 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>

Sortie

Appliquée au fichier XML ci-dessus, la feuille de style XSLT produit la collection de nœuds suivante :

<x a="a21">

<x a="a31">

<y>y31</y>

<y>y32</y>

</x>

</x>

and

<y>y31</y>

Voir aussi

Référence

Référence des types de données XML