你能想到的最简单的XSLT是什么,只能将第一个的值,在这种情况下,/ configuration /system.web / compile / @ debug属性从true转换为false?
这种转变:
- <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()|@*" name="identity">
- <xsl:copy>
- <xsl:apply-templates select="node()|@*"/>
- </xsl:copy>
- </xsl:template>
- <xsl:template match="system.web/compilation[1]/@debug">
- <xsl:attribute name="debug">false</xsl:attribute>
- </xsl:template>
- </xsl:stylesheet>
应用于此XML文档时:
- <configuration>
- <system.web>
- <compilation debug="true" defaultLanguage="C#">
- <!-- this is a comment -->
- </compilation>
- <compilation debug="true" defaultLanguage="C#">
- <!-- this is another comment -->
- </compilation>
- </system.web>
- </configuration>
产生想要的正确结果:修改任何system.web元素的第一个编译子元素的debug属性(但我们知道配置文件中只有一个system.web元素.
- <configuration>
- <system.web>
- <compilation debug="false" defaultLanguage="C#">
- <!-- this is a comment -->
- </compilation>
- <compilation debug="true" defaultLanguage="C#">
- <!-- this is another comment -->
- </compilation>
- </system.web>
- </configuration>