2012-07-10 66 views
-1

我有XML,看起來像這樣:XSL串連屬性爲每個

<field index="1" name="my_field_1" type="String"> 
<value>Value of Field 1</value> 
</field> 

<field index="2" name="my_field_2" type="String"> 
<value>Value of Field 2</value> 
</field> 

<field index="3" name="my_field_3" type="String"> 
<value>Value of Field 3</value> 
</field> 

在後來的每個I遍歷這些領域,我要儘量採取現場(這是相同的)的名稱,並拼接它索引屬性(取決於可能變化的元素數量)。

我試過這個(我把撇號放在變量中,因爲我不確定如何逃脫它)。

<xsl:variable name="currentIndex" select="@index"></xsl:variable> 
      <xsl:variable name="apostrof">'</xsl:variable> 

<xsl:value-of select="concat(
'//field[@name=', 
$apostrof, 
'sar_account_entrepreneur_name_', 
@index, 
$apostrof, 
']/value')"/> 

問題在於,這不是選擇值,它只是輸出字符串my_field_1。 輸出應該是字段1的值,字段2的值等。我需要的是動態地將名稱屬性與索引屬性相連接。

+2

我認爲這有助於您舉例說明您希望輸出看起來像什麼。 – hielsnoppe 2012-07-10 07:57:26

+0

我更新的XML這樣: <字段索引= 「1」 名稱= 「my_field_1」 類型= 「字符串」> 值字段的1 <字段索引= 「2」 名稱= 「my_field_2」 型=「字符串」> 值字段2的 所以輸出將是 值字段1,字段2等 – Peter 2012-07-10 08:13:30

+1

好的價值,我想我明白了。 :-) – hielsnoppe 2012-07-10 08:18:53

回答

0

的回答很簡單:

這段代碼使用指數ATTR並concated來命名。

0

以下變換應用到該輸入

<?xml version="1.0" ?> 
<root> 
<field index="1" name="my_field_1" type="String"> 
    <value>Value of Field 1</value> 
</field> 

<field index="2" name="my_field_2" type="String"> 
    <value>Value of Field 2</value> 
</field> 

<field index="3" name="my_field_3" type="String"> 
    <value>Value of Field 3</value> 
</field> 
</root> 

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:template match="/"> 
     <xsl:for-each select="field"> 
      <xsl:value-of select="value" /> 
     </xsl:for-each> 
    </xsl:template> 
</xsl:transform> 

產生的

<?xml version="1.0"?> 
Value of Field 1Value of Field 2Value of Field 3 

期望的輸出我希望這有助於。否則給我一個評論中的提示。

+0

HI @heilsnoppe我需要更清晰我需要使用索引並將其與字段名稱結合使用。因爲有更多的領域,我只對其中很少的領域感興趣。在xsl中,我希望使用所有字段的寫入名稱並向它們添加索引。 使用索引是因爲xml是自動生成的,索引可以具有從0到n的值。如果這是有道理的。 – Peter 2012-07-10 09:08:15

+1

也許你可以更新你的例子,以便它精確地反映你的輸入和你想要的輸出? – hielsnoppe 2012-07-10 09:11:42

+0

對不起,我沒有找到答案我會更新問題,我會添加答案。 – Peter 2012-07-10 13:20:31