如何使用XSLT创建PHP / JSP / ERB标记?

时间:2010-10-27 08:26:35

标签: php xml xslt erb cdata

我有一堆XML文件用于生成HTML页面。这些页面最终(用手)标记了一些<%= %>标签并制作成Ruby .erb模板。

有没有办法在XSL转换过程中直接生成特殊标记<?php ?><%= %>

我尝试使用<![CDATA[ ... ]]>块,但输出会生成&lt;&gt;,而不是<>

1 个答案:

答案 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">
     &lt;% Hello World! %>
   </xsl:text>
 </xsl:template>
</xsl:stylesheet>

将此转换应用于任何XML文档(未使用)会生成

<?php?>
     <% Hello World! %>