2013-06-19 95 views
0

我有一些XML這種格式解析XML來變換

<items> 
    <item> 
    <float>0.75</float> 
    <string>NAME</string> 
    <string>Bob</string> 
    <string>CREATION_TIME</string> 
    <timestamp>2012-11-01 00:03:08</timestamp> 
    <string>OCCUPATION</string> 
    <null /> 
    </item> 
</items> 

我想將它轉化爲一種格式像這樣

<item> 
    <NAME>Bob</NAME> 
    <CREATION_TIME>2012-11-01 00:03:08</CREATION_TIME> 
    <OCCUPATION></OCCUPATION> 
</item> 

是否有可能通過簡單的XSLT做轉換還是我必須寫我自己的解析器?

+0

你能解釋一下你想處理哪個'item'元素的子元素以及你想要關聯哪個元素?爲什麼'float'忽略,哪些元素應該成對創建'一些價值'結果元素? –

回答

2
<xsl:template match="item"> 
    <xsl:copy> 
    <xsl:apply-templates select="string[position() mod 2 = 1]"/> 
    </xsl:copy> 
</xsl:template> 

<xsl:template match="string"> 
    <xsl:element name="{.}"> 
    <xsl:value-of select="following-sibling::*[1]"/> 
    </xsl:element> 
</xsl:template> 
+0

+1 - 一個快速的項目:你的解決方案完全消除了''元素,而OP的預期解決方案保留了它。 – ABach

+0

@ABach,你是對的,我目前不確定什麼決定處理和關聯哪些元素。我會問海報。 –

+0

@MartinHonnen如果號碼的所有字符串,奇數的有鑰匙,甚至是那些有值。 – Narabhut