我有一个xml文件,格式如下
<root>
<entities>
<entity>
<entity_name></entity_name>
<entity_id></entity_id>
</entity>
<entity>
<entity_name></entity_name>
<entity_id></entity_id>
</entity>
<entity>
<entity_name></entity_name>
<entity_id></entity_id>
</entity>
</entities>
我正在尝试使用xslt将其转换为以下xml格式。
<root>
<entity_name></entity_name>
<entity_id></entity_id>
<entity_name></entity_name>
<entity_id></entity_id>
<entity_name></entity_name>
<entity_id></entity_id>
我是XSLT的新手,并且多年来一直试图解决这个问题。 请建议,如果我能得到一些很好的参考资料来学习XSLT,我真的很感激。
答案 0 :(得分:1)
您可以通过构建标准的XSLT Identity Transform
来实现这一目标<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
就其本身而言,它只会按原样复制所有元素。因此,您需要做的是添加与实体和实体元素匹配的额外模板,但只输出其子项而不实际复制元素本身。
尝试以下XSLT
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="entities|entity">
<xsl:apply-templates />
</xsl:template>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
应用于以下XSLT
时<root>
<entities>
<entity>
<entity_name/>
<entity_id/>
</entity>
<entity>
<entity_name/>
<entity_id/>
</entity>
<entity>
<entity_name/>
<entity_id/>
</entity>
</entities>
</root>
以下是输出
<root>
<entity_name></entity_name>
<entity_id></entity_id>
<entity_name></entity_name>
<entity_id></entity_id>
<entity_name></entity_name>
<entity_id></entity_id>
</root>