2013-09-12 8 views
1

У меня вопрос относительно XSLT, в основном у меня есть какое-то преобразование, но в конце я хотел бы иметь все преобразования, которые я сделал внутри одной переменной xslt:.XSLT loop внутри переменной XSLT

В основном то, что я имею в виду что-то вроде этого, конечно, XSLT будет более сложным, но только чтобы показать, что я имею в виду следующее:

<xsl:stylesheet xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:x="http://www.w3.org/2001/XMLSchema"> 
    <xsl:output method="html" indent="no"/> 
    <xsl:decimal-format NaN=""/> 
    <xsl:template match="/"> 
     <xsl:call-template name="base_template"/> 
    </xsl:template> 

    <xsl:template name="base_template"> 
      <!-- This is what i mean --> 
      <xsl:variable name="general_variale"> 

       <xsl:call-template name="template_three" /> 

       <br /> 

       <xsl:call-template name="template_two" /> 

       <br /> 

       <xsl:call-template name="template_one" />    

      </xsl:variable> 
     </xsl:template> 

      <xsl:template name="template_three"> 
      <xsl:for-each select="$Rows"> 

       <xsl:variable name="id" select="@ID" /> 

       <xsl:for-each select="$filteredRows_Releases"> 
        <process name="$id"> 
         .... 
        </process> 
       </xsl:for-each> 
      </xsl:for-each> 
     </xsl:template> 

     <xsl:template name="template_two"> 
      <xsl:for-each select="$Rows"> 

       <xsl:variable name="id" select="@ID" /> 

       <xsl:for-each select="$filteredRows_Releases"> 
        <task name="$id"> 
         .... 
        </task> 
       </xsl:for-each> 
      </xsl:for-each> 
     </xsl:template> 
</xsl:stylesheet> 

С помощью этого XSLT я хотел бы иметь general_variable взгляд что-то вроде этого:

<process name="somename"> 
</process> 
... 
<task name="somename"> 
</task> 
... 

Будет ли это работать или это невозможно?

+0

* "... но в конце я хотел бы иметь все преобразования, которые я сделал внутри одной' '." * Зачем вам это нужно? Пожалуйста, объясните, потому что, поскольку это стоит, это намерение не имеет большого смысла. – Tomalak

+0

, потому что у меня есть xml, который я должен проанализировать в правильной форме другого xml, а затем передать это как переменную (по параметру) в некоторую программу Flash – Alnedru

+0

Все еще не имеет смысла. Переменные XSLT и переменные Flash не имеют ничего общего. Используйте XSLT для преобразования своего XML, используйте свой язык хоста, чтобы передать результат преобразования в Flash. Это два отдельных шага, вы не можете сделать это из XSLT. – Tomalak

ответ

1

Да, вы можете зафиксировать результат любой обработки в переменной таким образом.

Однако в XSLT 1.0 существуют ограничения на то, как вы можете использовать полученную переменную: он известен как фрагмент дерева результатов. Если вы хотите обработать его любым интересным способом, вам понадобится расширение exslt: node-set(), чтобы преобразовать его в обычное дерево документов. В XSLT 2.0 это ограничение удаляется.

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