1

我正在努力实现使用 XSLT1.0 应该非常简单的事情,所以请多多包涵。

这是我的原始 XML:

<adapter-response>
<status>success</status>
<data>
<inventory>
<servers>
....
....
</servers>
<routers>
....
....
</routers>
。 ..
...
</inventory>
</adapter-response>

它是一个包含大量数据的巨大 XML。我只想剥离与适配器相关的标签,并使用原始标签保留库存数据。所以最终的 XML 将是:

<inventory>
<servers>
....
....
</servers>
<routers>
....
....
</routers>
...
...
</inventory>

请帮忙!

问候, 拉胡尔

4

1 回答 1

1

提供的 XML 文档的“草图”格式不正确,因此我对文档的重建可能不是问题中的意图:

<adapter-response>
    <status>success</status>
    <data>
        <inventory>
            <servers>
....
....
            </servers>
            <routers>
....
....
            </routers>
...
...
        </inventory>
    </data>
</adapter-response>

这种转变:

<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output omit-xml-declaration="yes" indent="yes"/>
 <xsl:strip-space elements="*"/>

 <xsl:template match="node()|@*">
     <xsl:copy>
       <xsl:apply-templates select="node()|@*"/>
     </xsl:copy>
 </xsl:template>

 <xsl:template match="*[contains(name(), 'adapter')]">
  <xsl:apply-templates/>
 </xsl:template>
</xsl:stylesheet>

仅复制到输出元素,其名称不包含 string "adapter"。上述文件的结果是

<status>success</status>
<data>
   <inventory>
      <servers>
....
....
            </servers>
      <routers>
....
....
            </routers>
...
...
        </inventory>
</data>
于 2012-05-23T13:29:24.310 回答