2016-04-11 62 views
-1

使用XSLT 1.0,我需要下面的輸入XML變換來輸出XML轉化的屬性值轉換成XML元素

--input XML

<Row> 
    <Column name="NUMBER" sqltype="int">123</Column> 
    <Column name="DEPT1" sqltype="int">A</Column> 
    <Column name="CUST_EMPTYPE" sqltype="int">1</Column> 
    <Column name="CUST_TIJD" sqltype="int">31</Column> 
</Row> 

--output XML

<EMPLOYEE xmlns="http://xmlns.oracle.com/Employee"> 
    <NUMBER>123</NUMBER> 
    <DEPT1>IHC</DEPT1> 
    <CUST_EMPTYPE>1</LASTNAME> 
    <CUST_TIJD>31</FIRSTNAME> 
</EMPLOYEE> 

的輸入xml的列名在設計時是未知的,列可以增長..

任何人都可以讓我知道如何做到這一點?

非常感謝,

回答

0

是的。這很簡單。一個很小的區別是你的DEPT1源和目標值之間的偏差(我真的不知道'IHC'可能來自哪裏)。我協調這在下面的XSLT代碼僅設置Column/@name節點新EMPLOYEE元素與老text()內容的內容:

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:output method="xml" /> 

    <xsl:template match="/Row"> 
    <EMPLOYEE xmlns="http:xmlns.oracle.com/Employee"> 
     <xsl:for-each select="Column"> 
     <xsl:element name="{@name}"> 
      <xsl:value-of select="text()" /> 
     </xsl:element> 
     </xsl:for-each> 
    </EMPLOYEE> 
    </xsl:template> 
</xsl:stylesheet> 

這樣做的結果是:

<EMPLOYEE xmlns="http:xmlns.oracle.com/Employee"> 
    <NUMBER>123</NUMBER> 
    <DEPT1>A</DEPT1> 
    <CUST_EMPTYPE>1</CUST_EMPTYPE> 
    <CUST_TIJD>31</CUST_TIJD> 
</EMPLOYEE> 
+0

非常感謝你。 –