使用 XSLT 选择子节点

Aid*_*dan 4 xslt xpath

什么是 xslt select 语句来转换 xml

<A>
  <B id="x">
    <C>
      <D>
      <D>
      <D>
      <D>
    </C>
  </B>
</A>
Run Code Online (Sandbox Code Playgroud)

<C name = "x">
  <D>
  <D>
  <D>
  <D>
</C>
Run Code Online (Sandbox Code Playgroud)

Dim*_*hev 5

这是一个简短而完整的解决方案

<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="B[@id]/C">
  <C name="{../@id}">
    <xsl:copy-of select="node()"/>
  </C>
 </xsl:template>
</xsl:stylesheet>
Run Code Online (Sandbox Code Playgroud)

当此转换应用于提供的 XML 文档时(更正为格式良好):

<A>
    <B id="x">
        <C>
            <D/>
            <D/>
            <D/>
            <D/>
        </C>
    </B>
</A>
Run Code Online (Sandbox Code Playgroud)

产生了想要的、正确的结果

<C name="x">
   <D/>
   <D/>
   <D/>
   <D/>
</C>
Run Code Online (Sandbox Code Playgroud)

说明

  1. 正确使用模板模式匹配。

  2. 使用AVT