2012-03-21 71 views
0

我是xsl-fo的新手。 在我的問題有3個兄弟標籤,其中一個有一個屬性。我必須首先打印具有屬性的那個,然後打印另一個。 我的問題是,我的結果沒有顯示,我試過的時候,如果。 繼承人我的代碼:如何導入基於變量值或結果值的圖像

   <fo:block> 
       <xsl:for-each select="platforms/platform"> 
        <xsl:choose> 
         <xsl:when test="@highestRated"> 
          <xsl:value-of select="platform"/> 
         </xsl:when> 
        </xsl:choose> 
       </xsl:for-each> 
       ! Also available on 
       <xsl:for-each select="platforms/platform"> 
        <xsl:choose> 
         <xsl:when test="not(@*)"> 
          <xsl:value-of select="platform"/> 
         </xsl:when> 
        </xsl:choose> 
       </xsl:for-each> 
      </fo:block> 

和繼承人爲例兄弟姐妹:

<platforms> 
    <platform>PC</platform> 
    <platform highestRated="true">PS3</platform> 
    <platform>X360</platform> 
</platforms> 

我不能隨便使用它們,他們在這裏出現的順序,因爲每個組的兄弟姐妹都以不同的順序。 我也沒有得到任何錯誤,文檔的其餘部分完美顯示,他們只是不會顯示結果。

謝謝

回答

0

嘗試改變

<xsl:value-of select="platform"/> 

<xsl:value-of select="."/> 

希望幫助

+0

你也可以是一個小更高效的使用一個xsl:如果不是的xsl:選擇,但是這是一個小點 – 2012-03-21 21:13:03

2

正如其他人所說,你的主要問題是,你有select="platform"這是找對於不存在的元素/platforms/platform/platform。同樣只有一個xsl:whenxsl:choosexsl:if相同。 (使用xsl:when如果你想要一個其他的條件,這xsl:if不提供它是有用的。使用xsl:choose/xsl:when/xsl:otherwise來代替。)但是,在這種情況下,你可能也只選擇要使用謂詞的元素;那麼不需要有條件的。

這裏有一些代碼可以滿足你的需求。

<?xml version="1.0" encoding="UTF-8" ?> 

<!-- New document created with EditiX at Wed Mar 21 21:51:52 GMT 2012 --> 

<xsl:stylesheet 
    version="1.0" 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns:fo="http://www.w3.org/1999/XSL/Format"> 

    <xsl:variable name="nl"> 
<xsl:text> 
    </xsl:text> 
    </xsl:variable> 

    <xsl:output method="xml" indent="yes"/> 

    <xsl:template match="/"> 

    <fo:block> 
     <xsl:value-of select="$nl"/> 

     <xsl:for-each select="platforms/platform[@highestRated]"> 
     <xsl:value-of select="."/> 
     <xsl:value-of select="$nl"/> 
     </xsl:for-each> 

     <xsl:text>! Also available on</xsl:text> 
     <xsl:value-of select="$nl"/> 

     <xsl:for-each select="platforms/platform[not(@highestRated)]"> 
     <xsl:value-of select="."/> 
     <xsl:value-of select="$nl"/> 
     </xsl:for-each> 

    </fo:block> 

    </xsl:template> 

</xsl:stylesheet> 

輸出

<?xml version="1.0" encoding="utf-8"?> 
<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format"> 
PS3 
! Also available on 
PC 
X360 
</fo:block>