2011-06-09 104 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擅长这一点。