最近,我对XSLT的神奇功能感到惊讶。我发现最有趣的事情之一是关于使用XSLT处理其他XSLT文档以生成动态模板。尽管我可以想象使用原始文本输出在输出中生成必要的XSL标记(例如,<![CDATA[<xsl:value-of="" />]]>)是多么容易,但由于XSLT根据定义是一个XML文档,因此肯定有一种方法可以将有效的XSLT输出生成为XML树。如何才能在不混淆XSLT解析器的情况下做到这一点(因为输入模板和输出都在同一个名称空间中)?
发布于 2015-05-24 12:14:28
感谢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>https://stackoverflow.com/questions/30419907
复制相似问题