2016-02-26 68 views
1

我'XSLT模板新XSLT和需要幫助遞歸和條件

這是我的XML源文件:

<cars best-category="83"> 
    <category id="1" name="SUV"> 
     <category id = "50" name="BMW"> 
     </category> 
    </category> 
    <category id="2" name="combi"> 
     <category id = "60" name="Volkswagen"> 
      <category id="102" name="4x4"> 
      </category>  
     </category>      
     <category id = "83" name="Skoda">   
     </category> 
     <category id = "32" name="Seat">    
     </category> 
    </category> 
    <category id="12" name="another"> 
    </category> 
</cars> 

,我需要這個結果(通過BEST-選擇全名屬性路徑類別值):

<CATEGORYTEXT>combi | Skoda</CATEGORYTEXT> 

我的XSLT:

 <xsl:for-each select="cars/category">    
      <CATEGORYTEXT>    
      <xsl:apply-templates select="category" > 
       <xsl:with-param name="text" > 
       <xsl:value-of select="@name" /> 
       </xsl:with-param> 
      </xsl:apply-templates>    
      </CATEGORYTEXT> 
     </xsl:for-each 

和我的模板:

<xsl:template match="category"> 
      <xsl:param name="text" /> 
      <xsl:if test="category"> 
       <xsl:apply-templates select="category"> 
       <xsl:with-param name="text"> 
        <xsl:value-of select="$text" /> 
        <xsl:text>&#xA;|&#xA;</xsl:text> 
        <xsl:value-of select="@name" /> 
       </xsl:with-param> 
       </xsl:apply-templates> 
      </xsl:if> 
      <xsl:value-of select="$text" /> 
      <xsl:text>&#xA;|&#xA;</xsl:text> 
      <xsl:value-of select="@name" />  
     </xsl:template> 

芽我不知道,如何篩選結果的最佳類別值...誰能幫助我?

感謝

回答

0

如何:

XSLT 1.0

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:output method="xml" version="1.0" encoding="utf-8" indent="yes"/> 

<xsl:template match="cars"> 
    <xsl:apply-templates select=".//category[@id=current()/@best-category]"/> 
</xsl:template> 

<xsl:template match="category"> 
    <CATEGORYTEXT> 
     <xsl:for-each select="ancestor::category"> 
      <xsl:value-of select="@name" /> 
      <xsl:text> | </xsl:text> 
     </xsl:for-each> 
     <xsl:value-of select="@name" /> 
    </CATEGORYTEXT> 
</xsl:template> 

</xsl:stylesheet> 
+0

這是確定這個確切的例子,但如果有下一個內部類的子元素?像這樣: '<汽車最佳類別= 「87」> \t <類別ID = 「2」 名稱= 「組合式」> <類別ID = 「83」 名稱= 「斯柯達」> \t \t \t <類別ID = 「87」 名稱= 「4×4」> \t ' 或 '<汽車最佳類別= 「12」> \t <類別ID = 「12」 名稱=「另一「> \t ' – zvodev

+0

請不要在評論中發佈代碼 - 而是編輯您的問題。 –

+0

規則就像操作系統中的文件夾路徑,如果best-category = 12,那麼結果只是「another」,或者如果102然後'combi |大衆| 4x4' – zvodev