1

我有以下格式的 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 的好参考资料,我将不胜感激。

4

1 回答 1

1

您可以通过构建标准 XSLT 身份转换来实现此目的

<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>
于 2012-11-26T10:44:12.600 回答