我有一堆XML文件用于生成HTML页面。这些页面最终(用手)标记了一些<%= %>
标签并制作成Ruby .erb模板。
有没有办法在XSL转换过程中直接生成特殊标记<?php ?>
或<%= %>
?
我尝试使用<![CDATA[ ... ]]>
块,但输出会生成<
和>
,而不是<
和>
。
答案 0 :(得分:4)
Is there a way to generate the special tags <?php ?> or <%= %> directly during the XSL transform?
<?php ?>
不是“特殊标记” - 这是XPath数据模型中的标准节点类型 - processing instruction 。
还有一条用于创建PI的XSLT指令:
<强> <xsl:processing-instruction>
强>
最后,您可以创建“&lt;%=%&gt;”之类的文字如果您使用文本 输出方法:
<xsl:output method="text"/>
但是在 text 输出方法中你输了一个节点 - 你应该把每个输出字符输入为文本。
因此,如果XSLT处理器支持,则使用默认的 xml 输出方法和(非强制!)属性disable-output-escaping="yes"
会更方便一些。
以下是一个示例:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes"/>
<xsl:template match="/">
<xsl:processing-instruction name="php"/>
<xsl:text disable-output-escaping="yes">
<% Hello World! %>
</xsl:text>
</xsl:template>
</xsl:stylesheet>
将此转换应用于任何XML文档(未使用)会生成:
<?php?>
<% Hello World! %>