XSL - Identity Transformation

Uit De Vliegende Brigade
Naar navigatie springen Naar zoeken springen
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

[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