Как создать теги PHP / JSP / ERB с помощью XSLT? - PullRequest
4 голосов
/ 27 октября 2010

У меня есть куча XML-файлов, которые я использую для генерации HTML-страниц. Эти страницы в конечном итоге размечаются (вручную) с помощью некоторых тегов <%= %> и превращаются в шаблоны Ruby .erb.

Есть ли способ генерировать специальные теги <?php ?> или <%= %> непосредственно во время преобразования XSL?

Я пытался использовать блок <![CDATA[ ... ]]>, но затем вывод генерируется с &lt; и &gt; вместо < и >.

1 Ответ

4 голосов
/ 27 октября 2010
Is there a way to generate the special tags <?php ?> or <%= %> directly during the XSL transform?

<?php ?> не является «специальным тегом» - это стандартный тип узла в модели данных XPath - инструкция обработки .

есть также инструкция XSLT для создания PI:

<xsl:processing-instruction>

Наконец, вы можете создать текст типа "<% =%>", если вы используете метод text output :

<xsl:output method="text"/>

, но в методе вывода text вы теряете любой узел - вы должны вводить каждый символ вывода в виде текста.

Итак, немного удобнее использовать метод вывода xml по умолчанию и атрибут (не обязательно!) disable-output-escaping="yes", если это поддерживается вашим процессором XSLT.

Вот пример :

<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! %>
...