XSL - Identity Transformation

Uit De Vliegende Brigade
Ga naar: navigatie, zoeken

[1]

Using and overriding the identity rule is the most fundamental and powerful XSLT design pattern.

De identity rule, identity transform, oftewel identity transformation in de praktijk:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="@*|node()">
   <xsl:copy>
      <xsl:apply-templates select="@*|node()"/>
   </xsl:copy>
</xsl:template>

</xsl:stylesheet>

Wat de identity transformation doet, is dat-ie een kopie van zichzelf maakt. De uitvoer is dus gelijk aan de invoer. Op zich niet bijster spannend. Het wordt pas interessant als je het combineert met aanpassingen. Dus dat een bepaald ding in alle nodes verandert, en de rest hetzelfde blijft.

Match

Wat er schuil gaat in de match

match="@*|node()

wil zeggen:

* @*     - Alle attributen
* |      - OR
* node() - Alle nodes

Dit kan ook explicieter [2]:

match="@*|*|processing-instruction()|comment()"

Oftewel:

* @*                    - Alle attributen
* |                     - OR
* *                     - Nodes: Tekst, root, elementen
* process-instruction() - Dat dus
* comment()             - Commentaar

Bronnen