2010-02-04 108 views
1

我在觸發xsl操作時僅在不同的值上有困難。下面是我的XML文件的摘錄:僅在不同的XML節點上執行某些操作

<?xml version="1.0" encoding="UTF-8" ?> 
<Doc Data="February 2010"> 
    <Title>Title 1</Title> 
    <Subject>Subject 1</Subject> 
</Doc> 
<Doc Data="January 2010"> 
    <Title>Title 2</Title> 
    <Subject>Subject 2</Subject> 
</Doc> 
<Doc Data="January 2010"> 
    <Title>Title 3</Title> 
    <Subject>Subject 3</Subject> 
</Doc> 

,這是我的XSL文件:

<?xml version="1.0" encoding="iso-8859-1"?> 
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
       xmlns:msxsl="urn:schemas-microsoft-com:xslt" 
       xmlns:objUtility="urn:utility" 
       version="1.0"> 
<xsl:output method="html" indent="no" encoding="ISO-8859-1"/> 

    <xsl:template match="Doc"> 
    <xsl:if test="not(@Data = preceding-sibling::Doc/@Data)"> 
     <xsl:value-of select="@Data" /> 
    </xsl:if> 
    </xsl:template> 

<xsl:apply-templates /> 

的問題是,這種代碼的前同輩::文件/ @數據總是元素只包含第一個元素,所以基本上我只能得到一個明顯的價值,而不是一月份。我錯在哪裏?如果你要問我必須使用XSL 1.0

+0

您的代碼示例適用於我,打印「2010年2月」和「2010年1月」。 – Tomalak 2010-02-04 12:40:58

+0

真奇怪,我得到的每一個元素,而不是(二月測試沒有,並且一月份測試對二月)... – 2010-02-04 13:33:47

+1

我沒有看到任何問題,你的樣式表片段,但如果你有東西不按預期工作,那麼它是更好提供最少但完整的樣本,讓其他人重現問題。你真的有一個片段發佈爲你的輸入?整個樣式表如何顯示? – 2010-02-04 13:49:49

回答

1

「有型文件前面任同級用數據屬性等於當前節點的數據屬性?」,對於與XPath應該像

<xsl:if test="not(preceding-sibling::Doc[@Data = current()/@Data])"> 
相關問題