Xml 输出XSLT的XSLT

Xml 输出XSLT的XSLT,xml,xslt,Xml,Xslt,最近我对XSLT的神奇功能感到惊讶。我发现最有趣的事情之一是使用XSLT处理其他XSLT文档以生成动态模板。尽管我可以想象,使用原始文本输出在输出中生成必要的XSL标记(例如,]]>)是多么容易做到这一点,但由于XSLT定义为XML文档,因此确实有一种方法可以生成有效的XSLT输出作为XML树。如何做到这一点,如果没有混淆XSLT解析器(因为输入模板和输出将位于同一名称空间中)?感谢Pawel对xsl:namespace别名的洞察。我似乎没有在搜索引擎上找到正确的关键词。对于任何对工作解决方案感

最近我对XSLT的神奇功能感到惊讶。我发现最有趣的事情之一是使用XSLT处理其他XSLT文档以生成动态模板。尽管我可以想象,使用原始文本输出在输出中生成必要的XSL标记(例如,
]]>
)是多么容易做到这一点,但由于XSLT定义为XML文档,因此确实有一种方法可以生成有效的XSLT输出作为XML树。如何做到这一点,如果没有混淆XSLT解析器(因为输入模板和输出将位于同一名称空间中)?

感谢Pawel对
xsl:namespace别名的洞察。我似乎没有在搜索引擎上找到正确的关键词。对于任何对工作解决方案感兴趣的人,可以举一个例子:

<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>


Read on xsl:namespace别名使用XSLT生成另一个XSLT样式表的示例可以在XSLT规范本身中找到:如果您仔细看看它的工作原理。它使用xslt将从html和css派生的xml转换为xsl fo的xslt。