2015-05-24 6 views
0

В последнее время я был поражен чудесными силами XSLT. Одна из вещей, которую я нашел наиболее интригующей, - это использование XSLT для обработки других документов XSLT для создания динамических шаблонов. Хотя я могу себе представить, как легко это можно сделать, используя необработанный текстовый вывод для создания необходимых тэгов XSL на выходе (например, <![CDATA[<xsl:value-of="" />]]>), поскольку XSLT по определению является документом XML, который, несомненно, является способом создания допустимого XSLT-вывода, как дерево XML. Как это можно сделать, если вообще, без путаницы с парсером XSLT (как и шаблон ввода, так и выход будут жить в одном пространстве имен)?XSLT для вывода XSLT

+2

Читать на XSL: пространства имен-псевдонимов – Pawel

+1

Пример использования XSLT для создания другой XSLT stylesheet можно найти в самой спецификации XSLT: http://www.w3.org/TR/xslt/#element-namespace-alias –

ответ

0

Благодаря 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> 
+0

Если вы посмотрите на http://www.cloudformatter.com/Nimbus, который является как это работает. Он использует xslt для преобразования xml, полученного из html и css, в xslt для xsl fo. –

Смежные вопросы