2013-05-08 99 views
0

我想全自動的XSLT處理這個XML實例,現場和值必須動態地分析,而不是硬編碼:XSL轉換 - 樹XML爲純域值XML

<root> 
<field1>value1</field1> 
<field2>value2</field2> 
</root> 

這樣:

<items> 
<field>field1</field> 
<value>value1</value> 
<field>field2</field> 
<value>value2</value> 
</items> 

請幫忙。

回答

0

你需要的東西,如:

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> 
    <xsl:output method="xml" indent="yes" encoding="UTF-8"/> 
    <xsl:strip-space elements="*"/> 

    <xsl:template match="root"> 
    <items> 
     <xsl:apply-templates/> 
    </items> 
    </xsl:template> 

    <xsl:template match="*"> 
    <xsl:param name="firstElement" select="replace(name(),'([0-9])','')"/> 
    <xsl:param name="SecondElement" select="replace(text(),'([0-9])','')"/> 
    <xsl:element name="{$firstElement}"> 
     <xsl:value-of select="name()"/> 
    </xsl:element> 
    <xsl:element name="{$SecondElement}"> 
     <xsl:value-of select="."/> 
    </xsl:element> 
    </xsl:template> 

</xsl:stylesheet> 
+0

太好了!感謝它非常簡單!謝謝! – Sotona 2013-05-08 05:59:47

0

您可以使用name()函數來獲取當前元素的名稱。
例如,如果.<field1>,它將返回'field1'

所以模板的相應部分將

<field><xsl:value-of select="name()" /></field> 
<value><xsl:value-of select="." /></value>