0

有人可以帮我理解下面的 XSLT

<xsl:stylesheet version="1.0" >
  <xsl:output method="xml" indent="yes" />
  <xsl:template match="@* | node()">
    <xsl:copy>
      <xsl:apply-templates select="@* | node()" />
    </xsl:copy>
  </xsl:template>
</xsl:stylesheet>

基本上我想应用 XSLt 转换从 web.config 中删除以下元素:

<system.net>
      <defaultProxy>
         <proxy
            usesystemdefault = "false"
            proxyaddress="http://proxyserver"
            bypassonlocal="true"
         />
      </defaultProxy>
   </system.net>
4

1 回答 1

2

这是“身份”模板的标准形式,它将其输入复制到输出不变 - 它通过匹配任何节点(@*匹配属性,node()匹配其他所有内容),制作该节点的浅表副本,然后递归地将模板应用于属性和它刚刚浅拷贝的节点的子节点。您可以通过添加其他模板来覆盖特定节点的此行为,这将优先于身份模板。例如,要删除system.net您可以添加的所有元素

<xsl:template match="system.net" />

(即“当你看到一个system.net元素时,什么都不做”)。system.net删除所有元素的完整转换将是

<xsl:stylesheet version="1.0" >
  <xsl:output method="xml" indent="yes" />
  <xsl:template match="@* | node()">
    <xsl:copy>
      <xsl:apply-templates select="@* | node()" />
    </xsl:copy>
  </xsl:template>

  <xsl:template match="system.net" />
</xsl:stylesheet>
于 2013-04-04T11:00:15.957 回答