Измените единственный атрибут с XSLT

Что является самым простым XSLT, можно думать для преобразования значения первого, в этом случае только, /configuration/system.web/compilation/@debug атрибут от true кому: false?

7
задан Pete Montgomery 7 June 2010 в 21:23
поделиться

2 ответа

Это преобразование:

<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, по мере необходимости.

6
ответ дан 7 December 2019 в 12:15
поделиться

false внутри <компиляции>? Или я неправильно понимаю вопрос?

-1
ответ дан 7 December 2019 в 12:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: