XSLT

2010-06-07 23 views
7

XSLT

ile tek niteliği Alter Ne aklınıza gelebilecek en basit XSLT, sadece bu durumda, birinci değerini dönüştürmek için /configuration/system.web/compilation/@debug niteliğini true den false var ki?

+0

İyi soru (+1). Kısa, basit ve doğru bir çözüm için cevabımı görün. Lucero'nun şu anki cevabı gayet yanlış - cevabına yorumumu iletin. –

cevap

6

Bu dönüşüm: ilk compilation çocuğun debug niteliğini değiştirir:

<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> 

aranan, doğru sonucu üretir: bu XML belge üzerinde uygulanan

<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> 

Herhangi bir system.web öğesinin (ancak var olduğunu biliyoruz Bir yapılandırma dosyasında bir adet system.web öğesi. Görüldüğü gibi gerektiği gibi

<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> 

sadece ilk debug vasıf, false için modifird edilir.

+1

Bu XSLT için kimlik deseni dönüşümü denir ve @Dimitre Novatchev işaret ettiği gibi, son derece güçlü. – lavinio

+0

'xsl: attribute' öğesinin, xsl: template 'dizgesinin eşleştiğini, XPath'da zaten verildiğinde, değiştirilecek öznitelik adından söz etmek zorunda olduğu bir utançtır. "Bu özniteliği, ne denirse çağırsın" demenin bir yolu var mı? –

+0

@TomAnderson: AVT gösterimini kullanabilirsiniz: '' İstediğiniz bu değil ama bir açıdan daha da iyi. –

-1

<xsl:attribute name="debug">false</xsl:attribute><compilation> içinde? Yoksa sorumu yanlış anladım mı?