2014-12-29 104 views
-1

我不能從XSLT閱讀以下屬性值(「的AttributeValue」),我是用XML,XLST值不填充

< ----這裏做錯什麼我不能粘貼XML格式的代碼---它說格式不正確,但它是 - >在下面的評論中添加XML和XSLT

<MonthlyReport> 
    <lstAttributes> 
    <Attributes> 
     <AttributeName>Stories</AttributeName> 
     <AttributeValue>2000</AttributeValue> 
    </Attributes> 
    </lstAttributes> 
</MonthlyReport> 


<xsl:template match="/MonthlyReport"> 
<html> 
    <table> 
    <tr> 
     <td> 
     <xsl:choose> 
      <xsl:when test="lstAttributes/Attributes/AttributeName='Stories'"> 
      <xsl:value-of select="AttributeValue"/> 
      </xsl:when> 
     </xsl:choose> 
     </td> 
    </tr> 
    </table> 
</html> 
</xsl:template> 
+2

如果它的屬性和當前範圍中需要'@ AttributeValue'。請爲您的問題提供更多背景。 – StuartLC

+0

添加XML和XSLT,如何讓故事的AttributeValue元素屬性值name元素 –

回答

1

這裏的問題是,你正在測試lstAttributes/Attributes/AttributeName但隨後嘗試選擇AttributeValue這是不是在當前範圍內(進入這個模板時,我們仍然在/MonthlyReport)範圍。既然你沒有在你的otherwise選擇,你可以嘗試,而不是:

<xsl:template match="/MonthlyReport"> 
<html> 
    <table> 
    <tr> 
     <td> 
     <xsl:value-of 
     select="lstAttributes/Attributes[AttributeName='Stories']/AttributeValue"/> 
     </td> 
    </tr> 
    </table> 
</html> 
</xsl:template> 

這將使td空,如果沒有被發現。

如果你確實想做些不同的事在otherwise,你就需要重複完整路徑(除非你把lstAttributes/Attributes成電流):

<xsl:choose> 
    <xsl:when test="lstAttributes/Attributes/AttributeName='Stories'"> 
    <xsl:value-of select="lstAttributes/Attributes/AttributeValue"/> 
    </xsl:when> 
    <xsl:otherwise> 
     <xsl:text>No Stories present</xsl:text> 
    </xsl:otherwise> 
</xsl:choose> 

注意,當然所有的Attribute*實際上元素,因此在你的問題中有關屬性的最初混淆。

+0

完美!!!!謝謝Stuart –

0

給定的輸入XML,如:

<item name="foo">contents</item> 

如果合作ntext節點爲item,則屬性值的路徑爲@name。如果上下文節點爲@item,則屬性值爲.的路徑。

<xsl:template select="item"> 
    <xsl:value-of select="@name"/> 
</xsl:template> 

<xsl:template select="@name"> 
    <xsl:value-of select="."/> 
</xsl:template> 
+0

我的XML格式是不同的不是一個U給例如 故事 <的AttributeValue> 2000 < xsl:choose> 的 < /xsl:when>

+0

好的 - 你根本沒有使用XML屬性,它們只是元素混淆的命名屬性。使用代碼塊格式化您的xml - 即每行縮進4個空格,然後它將可讀。 – user52889

+0

添加了xml和xslt,這裏如何獲取故事屬性值attributename –