20 července 2009

XSLT a zpracování několika transformacemi

Při používání XSLT jsem narazil na problematiku zpracování jednoho dokumentu několika následnými XSLT transformacemi. Možná se Vám stalo (podobně jako mě), že předchozí transformace upravila dokument a odstranila některé tagy, které chceme v další transformaci zpracovat (poznámka autora: neobjevuji tu kolo, jen poukazuji na možné řešení).

Příklad (pouze obsah xml dokumentu)
<tagProZpracovani_DRUHOU_Transformac>
<tagProZpracováni_PRVNI_transformaci />
</tagProZpracováni_DRUHOU_transformaci>


Pokud bychom použil transformaci T1, a ve které bychm zpracovali pouze vnitřní tag, vnější tagy by byli odstraněny.

Celý "problém" řeší následující XSLT - neboli transformace T1.
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="2.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:template match="tagProZpracováni_PRVNI_transformaci" >
<!-- tělo transformace -->
</xsl:template>
</xsl:stylesheet>


Pokud si neumíte představit kdy něco takového použít, vydržte, popíšu v příštím článku jak ulehčit práci při psaní DocBooku. Třeba tím, že si vygenerujeme vlastním tagem obsah tabulky - tzn. první transformací (T1) si vytvoříme validní dokument a druhou (T2) přeložené html. :)

Žádné komentáře: