xslt, zřetězení transformací v jednom souboru rubrika: Programování: Jiné
Mám ošklivé xmlko.
Nejdříve jej pomocí xslt přeupravím a udělám hezčí.
Pak druhým xslt naformátuju požadovaný výsledek.
Zkoušel jsem to dělat rovnou, ale ten výsledný xslt byl strašně zašmodrchanej, zatímco takto dvouprůchodně to vypadá mnohem lépe.
Jenže teď mám problém, že se ten Xalan musí volat dvakrát:
Xalan src.xml normalize.xslt > out1.xml Xalan out1.xml build.xslt > produkt.xml
Je nějaká možnost, jak to zřetězit tak, aby to volání bylo jen jednou, a to dvojí zpracování bylo nějak "uvnitř" toho xslt? Že si tu normalizující šablonu nějak natáhne a aplikuje sám?
Děkuji.
Teraz nerozumiem co chces dosiahnut 1 command v riadku tak to potom napr.:
Xalan src.xml normalize.xslt | Xalan -o produkt.xml - build.xslt
Ak chces nieco komplexnejsie tu je to pekne popisane
http://www.gerixsoft.com/blog/xslt/pipeline
A ak pouzivas Xalan z balicka musis pouzit http://xalan.apache.org/xalan-c/extensionslib.html#nodeset. Takze xslt bude asi takto nejak
Pricom upravis kazdy xslt aby malo vlastny mode pri template.
<?xml version="1.0" encoding="utf-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xalan="http://xml.apache.org/xalan" exclude-result-prefixes="xalan"> <xsl:output method="xml" omit-xml-declaration="no" indent="no" encoding="UTF-8"/> <xsl:import href="normalize.xslt"/> <xsl:import href="build.xslt"/> <xsl:template match="/"> <xsl:variable name="link1"> <xsl:apply-templates mode="normalize" select="node()"/> </xsl:variable> <xsl:variable name="link2"> <xsl:apply-templates mode="build" select="xalan:nodeset($link1)/node()"/> </xsl:variable> <xsl:copy-of select="xalan:nodeset($link2)/node()"/> </xsl:template> </xsl:stylesheet>
Pro zobrazení všech 2 odpovědí se prosím přihlaste:
Nebo se přihlaste jménem a heslem:
Komentáře