XSLT转换以替换web.config上的元素

时间:2013-04-04 10:57:51

标签: xml xslt xml-parsing

有人可以帮我理解下面的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>

1 个答案:

答案 0 :(得分: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>