Что является самым простым XSLT, можно думать для преобразования значения первого, в этом случае только, /configuration/system.web/compilation/@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>
дает желаемый, правильный результат: изменяет атрибут debug
первого дочернего элемента компиляции
любого элемента system.web
(но мы знаем, что в конфигурационном файле есть только один элемент 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>
Как видим, только первое атрибут debug
изменяется на false
, по мере необходимости.
внутри <компиляции>
? Или я неправильно понимаю вопрос?