2013-04-10 39 views
0
<xsl:template name="split"> 
    <xsl:param name="list"/> 
     <xsl:variable name="first"> 
         <xsl:value-of select="substring-before($list,' ')"/> 
        </xsl:variable> 
     <xsl:copy-of select="$first"/> 
</xsl:template> 

如何從其他模板提供變量動態值?

  <xsl:variable name="test">c0 c1 c2 c3 c4</xsl:variable> 
       <xsl:variable name="var2> 
        <xsl:call-template name="split"> 
         <xsl:with-param name="returnvalue"> 
          <xsl:value-of select="$test"></xsl:with-param> 
        </xsl:call-template> 
       </xsl:variable> 

//處理完成

我想從模板返回值C0再回到模板匹配做處理,然後再去分割模板再次返回c1完成相同的處理,然後返回到分割模板,然後再次在匹配模板中處理Ë;取決於測試變量的值...

我怎樣才能逐個檢索這些值並處理代碼?

回答

0

該樣式將掃描着在你輸入的字符串:

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    version="1.0"> 

    <xsl:output method="text"/> 

    <xsl:variable name="string" select="'c0 c1 c2 c3 c4'"/> 
    <xsl:variable name="delim" select="' '"/> 

    <xsl:template match="/"> 
     <xsl:call-template name="wrapper"> 
      <xsl:with-param name="string" select="$string"/> 
     </xsl:call-template> 
    </xsl:template> 

    <xsl:template name="wrapper"> 
     <xsl:param name="string"/> 
     <xsl:choose> 
      <!-- handle empty input --> 
      <xsl:when test=" $string = '' "/> 

      <!-- handle next token --> 
      <xsl:when test="contains($string, $delim)"> 
       <xsl:call-template name="process"> 
        <xsl:with-param name="substring" select="substring-before($string,$delim)"/> 
       </xsl:call-template> 
       <xsl:call-template name="wrapper"> 
        <xsl:with-param name="string" select="substring-after($string,$delim)"/> 
       </xsl:call-template> 
      </xsl:when> 

      <!-- handle last token --> 
      <xsl:otherwise> 
       <xsl:call-template name="process"> 
        <xsl:with-param name="substring" select="$string"/> 
       </xsl:call-template> 
      </xsl:otherwise> 
     </xsl:choose> 
    </xsl:template> 

    <xsl:template name="process"> 
     <xsl:param name="substring"/> 
     <xsl:text>RECEIVED SUBSTRING: </xsl:text> 
     <xsl:value-of select="$substring"/> 
     <xsl:text>&#x000A;</xsl:text> 
    </xsl:template> 

</xsl:stylesheet> 

生成以下的輸出:

RECEIVED SUBSTRING: c0 
RECEIVED SUBSTRING: c1 
RECEIVED SUBSTRING: c2 
RECEIVED SUBSTRING: c3 
RECEIVED SUBSTRING: c4 
+0

感謝你的幫助,但我想首先我取C0然後處理一些代碼然後c1處理相同的代碼等等。 – 2013-04-13 08:23:27

+0

你應該能夠用更有用的東西來替換'',它可以處理你的每個項目,但是我不清楚你的其他需求。 – 2013-04-13 22:44:38

相關問題