2011-06-09 103 views
0

我有下面的XML文件重命名XML元素屬性

<?xml version="1.0" encoding="iso-8859-1"?> 
    <DATASET> 
    <TYPE>success</TYPE> 
    <RECORD> 
     <DATA type="email">[email protected]</DATA> 
     <DATA type="name">somename</DATA> 
     <DATA type="category">Other</DATA> 
     <DATA type="uid">459d28cd11</DATA> 
     <DATA type="state">bounced</DATA> 
     <DATA type="statetype">Blocked</DATA> 
     <DATA type="stateaction">Not Trashed</DATA> 
     <DATA type="statetime">5-24-11 12:05 am PDT</DATA> 
    </RECORD> 
    <RECORD> 
     <DATA type="email">[email protected]</DATA> 
     <DATA type="name">somename</DATA> 
     <DATA type="category">Other</DATA> 
     <DATA type="uid">0dcc42ebe3</DATA> 
     <DATA type="state">bounced</DATA> 
     <DATA type="statetype">Blocked</DATA> 
     <DATA type="stateaction">Not Trashed</DATA> 
     <DATA type="statetime">15-11-11 12:05 am PDT</DATA> 
    </RECORD> 
    </DATASET> 

而且我想把它轉換成以下格式

<?xml version="1.0" encoding="iso-8859-1"?> 
    <DATASET> 
    <TYPE>success</TYPE> 
    <RECORD> 
     <email>[email protected]</email> 
     <name>somename<name> 
     <category>Other</category> 
     <uid>459d28cd11</uid> 
     <state>bounced</state> 
     <statetype>Blocked</statetype> 
     <stateaction>Not Trashed</stateaction> 
     <statetime>5-24-11 12:05 am PDT</statetime> 
    </RECORD> 
    <RECORD> 
     <email>[email protected]</email> 
     <name>somename<name> 
     <category>Other</category> 
     <uid>0dcc42ebe3</uid> 
     <state>bounced</state> 
     <statetype>Blocked</statetype> 
     <stateaction>Not Trashed</stateaction> 
     <statetime>15-11-11 12:05 am PDT</statetime> 
    </RECORD> 
    </DATASET> 

能否請您給我提供的XSLT變換到的應用價值做到這一點?

+0

我想你的意思是_XSL transformation_。 XSD用於定義文檔規則的XML模式定義。 – cordsen 2011-06-09 02:24:54

+0

好吧,你不想嘗試自己,但至少努力知道你需要的技術名稱... – 2011-06-09 05:03:08

回答

3

這應該爲你

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

    <xsl:template match="@* | node()"> 
     <xsl:copy> 
      <xsl:apply-templates select="@* | node()"/> 
     </xsl:copy> 
    </xsl:template> 

    <xsl:template match="DATA"> 
     <xsl:element name="{@type}"><xsl:value-of select="."/></xsl:element> 
    </xsl:template> 
    </xsl:stylesheet> 

工作是如何工作的w3schoolswebucator檢查了導遊的簡單說明。

+0

+1「寬大」(顯然正確的答案:) :) – 2011-06-09 07:30:30

+0

工作就像一個魅力!非常感謝! – 2011-06-09 22:05:03

0

這不是一個有效的xml文件... <email>等沒有結束標籤,您可能需要手動進行字符串處理。 Perl擅長這一點。