我正在尝试将属性转换为子元素,即转为以下内容:
<employees companyid="101">
<record>
<id>1</id>
<name>pradeep</name>
<designation>softeng</designation>
</record>
<record>
<id>2</id>
<name>som</name>
<designation>softeng</designation>
</record>
<record>
<id>3</id>
<name>Javed</name>
<designation>softeng</designation>
</record>
</employees>
我想以这种方式改造
<employees>
<record>
<id>1</id>
<name>pradeep</name>
<designation>softeng</designation>
</record>
<record>
<id>2</id>
<name>som</name>
<designation>softeng</designation>
</record>
<record>
<id>3</id>
<name>Javed</name>
<designation>softeng</designation>
</record>
</employees>
它不起作用。有什么建议?
答案 0 :(得分:0)
我希望您在每个<companyid>
级别都需要<record>
元素。您可以使用以下内容:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.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="@*|node()">
<xsl:copy>
<xsl:apply-templates select="node()" />
</xsl:copy>
</xsl:template>
<xsl:template match="record">
<xsl:copy>
<companyid><xsl:value-of select="ancestor::employees/@companyid"/></companyid>
<xsl:apply-templates />
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
如果您只想让它出现在第一个<record>
元素上,您可以将<xsl:template match="record">
更改为<xsl:template match="record[1]">
答案 1 :(得分:0)
<?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="/">
<employees>
<xsl:copy-of select="employees/*"/>
</employees>
</xsl:template>
</xsl:stylesheet>
假设您的输出正确并且您只想删除companyid属性。