最近我对XSLT的奇妙力量感到惊讶。我发现最有趣的一件事是使用XSLT处理其他XSLT文档以生成动态模板。虽然我可以想象使用原始文本输出在输出中生成必要的XSL标记(例如,<![CDATA[<xsl:value-of="" />]]>
)是多么容易,但是因为XSLT定义为XML文档,所以肯定有一种方法可以生成有效的XSLT输出作为XML树。如果有的话,如何在不混淆XSLT解析器的情况下完成此操作(因为输入模板和输出都将存在于同一命名空间中)?
答案 0 :(得分:0)
感谢Pawel对xsl:namespace-alias
的洞察力。我似乎没有在搜索引擎上找到合适的关键字。对于任何对工作解决方案感兴趣的人,可以是一个例子:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:axsl="http://www.w3.org/1999/XSL/TransformAlias">
<xsl:namespace-alias stylesheet-prefix="axsl" result-prefix="xsl"/>
<xsl:template match="/">
<axsl:stylesheet version="1.0">
<axsl:template match="/">
<axsl:value-of select="'Some text'" />
</axsl:template>
</axsl:stylesheet>
</xsl:template>
</xsl:stylesheet>
哪会导致输出:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<xsl:value-of select="'Some text'" />
</xsl:template>
</xsl:stylesheet>