2013-03-07 73 views
-1

我是XSLT新手。我有以下xml,並想知道如何使用XSLT來遍歷A的每個元素以獲得它們的值。另外,對於每個元素,如果位置mod 3 = 2,則獲取該元素值及其下一個元素值。例如, - 因爲02 mod 3 = 2,得到值22和2.5,依此類推。使用XSLT在節點內循環使用不同名稱的子元素

任何幫助表示讚賞。

謝謝。

<A> 
<A01>abc</A01> 
<A02>22</A02> 
<A03>2.5</A03> 
<A04>0</A04> 
<A05>2</A05> 
<A06>1.8</A06> 
<A07>2</A07> 
<A08>3</A08> 
<A09>1.9</A09> 
</A> 
<A> 
<A01>abb</A01> 
<A02>22</A02> 
<A03>1.5</A03> 
<A04/> 
</A> 

我想結果看起來像下面:

 
abc|22|2.5|0 
abc|2|1.8|2 
abc|3|1.9| 
abb|22|1.5| 
+1

你要什麼你的輸出是什麼樣子? – 2013-03-07 20:59:18

+0

我希望結果如下所示: abc | 22 | 2.5 | 0 abc | 2 | 1.8 | 2 abc | 3 | 19.9 | – 2013-03-08 19:35:50

回答

0

從輸出你描述它看起來像你想生成行的列是兒童1,N,N + 1,N 2對所有的n,使得N模3 = 2。

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> 
    <xsl:output method="text"/> 

    <xsl:template match="/"> 
    <xsl:apply-templates select="*/A/*[(position() mod 3) = 2]"/> 
    </xsl:template> 

    <xsl:template match="*"> 
    <xsl:value-of select="concat(../*[1],'|', ., '|', 
     following-sibling::*[1], '|', following-sibling::*[2], 
     '&#10;')"/> 
    </xsl:template> 
</xsl:stylesheet> 

當在下面的XML應用(您的例子包在附加的根元素,使其充分形成)

<root> 
<A> 
<A01>abc</A01> 
<A02>22</A02> 
<A03>2.5</A03> 
<A04>0</A04> 
<A05>2</A05> 
<A06>1.8</A06> 
<A07>2</A07> 
<A08>3</A08> 
<A09>1.9</A09> 
</A> 
<A> 
<A01>abb</A01> 
<A02>22</A02> 
<A03>1.5</A03> 
<A04/> 
</A> 
</root> 

這個樣式表產生正確的結果

abc|22|2.5|0 
abc|2|1.8|2 
abc|3|1.9| 
abb|22|1.5| 
+0

謝謝。這正是我正在尋找的:) – 2013-03-11 14:55:12

相關問題