我有以下 XML 文档:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Entity Type="defect">
<Fields>
<Field Name="user-28"/>
<Field Name="user-29">
<Value>1</Value>
</Field>
<Field Name="has-change">
<Value></Value>
</Field>
...
我正在尝试对其进行转换,以便所有Field
元素都成为Name
属性转换为元素的元素,并且它会删除该Fields
元素。到目前为止,我使用以下转换取得了部分成功:
<?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" version="1.0" encoding="UTF-8"
indent="yes"/>
<xsl:template match="//Entity">
<xsl:copy>
<xsl:apply-templates select="node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="Field">
<xsl:element name="{@Name}">
<xsl:value-of select="Value"/>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
它导致以下结果,部分正确,但它丢失了元素的Type
属性:Entity
<?xml version="1.0" encoding="UTF-8"?>
<Entity>
<user-28/>
<user-29>1</user-29>
<has-change/>
另一个复杂之处是我还需要它来处理以下文档,该文档包含一个Entities
具有多个Entity
节点的根节点,而不会丢失根节点:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Entities TotalResults="60">
<Entity Type="defect">
<Fields>
<Field Name="id">
<Value>1161</Value>
</Field>