2016-04-11 34 views
-1

に属性値を変換、私はXMLXSLT 1.0を使用してXML要素

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

--output 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> 

--input出力XML

に入力XMLの下に変換する必要があります入力XMLの列名は設計時には分かりませんが、列は大きくなります。

これを達成する方法を知っていますか?

ありがとう、

答えて

0

はい、ありがとうございます。それは非常に簡単です。 1つの小さな違いは、DEPT1の送信元と宛先の値の偏差です(実際にはどこから来たのかわかりません)。私は古いtext()コンテンツの内容を新しいEMPLOYEE要素にColumn/@nameノードを設定し、次のXSLTコードでそれを調和:

<?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

ありがとうございました。 –

関連する問題