我覺得我錯過了一些簡單和/或過度的東西。我在這裏和網絡上的其他地方找到的答案已經讓我接近,但有些不同,讓我絆倒了我。我堅持使用XSL 1.0。XSLT:根據當前狀態返回下一個節點
XML
<?xml version="1.0" encoding="UTF-8" ?>
<Items>
<Data>
<Class>
<List>
<Elements>
<Property>1</Property>
<Property>Date</Property>
<Property>08/10/10</Property>
</Elements>
<Elements>
<Property>2</Property>
<Property>Time</Property>
<Property>21:09:11</Property>
</Elements>
<Elements>
<Property>3</Property>
<Property>User</Property>
<Property>Mario</Property>
</Elements>
</List>
</Class>
<Class>
<List>
<Elements>
<Property>1</Property>
<Property>Date</Property>
<Property>10/12/14</Property>
</Elements>
<Elements>
<Property>2</Property>
<Property>Time</Property>
<Property>08:10:00</Property>
</Elements>
<Elements>
<Property>3</Property>
<Property>User</Property>
<Property>Luigi</Property>
</Elements>
</List>
</Class>
</Data>
</Items>
XSLT
<?xml version='1.0' encoding='UTF-8' ?>
<xsl:stylesheet version='1.0' xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>
<xsl:output version='1.0' encoding='UTF-8' indent='no' method='xml' />
<xsl:template match='/'>
<xsl:for-each select="Items/Data/Class">
<TR>
<xsl:for-each select="List/Elements">
<TD><xsl:value-of select="Property['Date']/following-sibling::Property[1]" /></TD>
<TD><xsl:value-of select="Property['Time']/following-sibling::Property[1]" /></TD>
<TD><xsl:value-of select="Property['User']/following-sibling::Property[1]" /></TD>
</xsl:for-each>
</TR>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
所需的輸出
<TR>
<TD>08/10/10</TD>
<TD>21:09:11</TD>
<TD>Mario</TD>
</TR>
<TR>
<TD>10/12/14</TD>
<TD>08:10:00</TD>
<TD>Luigi</TD>
</TR>
基本上,經過PROPERT如果是Date,則返回下一個...如果是Time,則返回下一個...並且如果它是User,則返回下一個。繼續瀏覽所有課程。
我的選擇不太對,我無法通過第一個元素。我需要另一個for-each或選擇/ when語句嗎?
感謝您的幫助。
啊,謝謝。你的第一個解決方案有效我忽略了在我的例子中指定,但確實有其他的元素,我不想包括在內,所以匹配對於這些標準很重要。 –