2016-03-22 9 views
3

Ich habe seltsames Verhalten gesehen, durch seltsame Weise, dass es als Gegenteil zu den Bedingungen verhält, wie wir es normalerweise tun. folgenden sind die Details:Identität seltsames Verhalten bei Verwendung mit einer anderen Vorlage zu transformieren

XSLT-Code

<?xml version="1.0" encoding="UTF-8" ?> 

<xsl:template match="child[@include='1']"/> 

<xsl:template match="@*|node()"> 
    <xsl:copy> 
     <xsl:apply-templates select="@*|node()"/> 
    </xsl:copy> 
</xsl:template> 

Quelle XML

<?xml version="1.0" encoding="UTF-8"?> 
<Parent> 
    <child include='1'> 
     <Attribute>Attribute1</Attribute> 
    </child> 
    <child include='1'> 
     <Attribute>Attribute2</Attribute> 
    </child> 
    <child include='0'> 
     <Attribute>Attribute3</Attribute> 
    </child> 
    <child include='0'> 
     <Attribute>Attribute4</Attribute> 
    </child> 
</Parent> 

Und mein Ergebnis ist:

<Parent> 
    <child include="0"> 
     <Attribute>Attribute3</Attribute> 
    </child> 
    <child include="0"> 
     <Attribute>Attribute4</Attribute> 
    </child> 
</Parent> 

zu normalen Bedingungen Acoording setzen wir das Ergebnis wie unter Acccording zu erhalten sein sollte

<xsl:template match="child[@include='1']"/> 
<Parent> 
    <child include="1"> 
     <Attribute>Attribute3</Attribute> 
    </child> 
    <child include="1"> 
     <Attribute>Attribute4</Attribute> 
    </child> 
</Parent> 

hoffentlich habe ich im Detail erklärt: dies ist der Link zu dem Code und XSLT-Prozessor: Sample Code

Antwort

1

Ich bin nicht sicher, was Sie Ihre Erwartungen auf der Basis.

Ihre erste Vorlage hat eine Priorität von 0,5, während Ihre zweite Vorlage (Identität transformieren) Vorlage eine Priorität von -0,5 hat.

Daher die Vorlage für alle child Elemente, deren include Attribut ist 1 ist die erste Vorlage. Diese Vorlage ist leer, also gibt sie nichts aus. Als Ergebnis wird kein child Element mit dem include Attribut 1 in der Ausgabe angezeigt.

Alle anderen Knoten werden von der zweiten Vorlage abgeglichen, die sie (und ihre Rekursion, ihre Nachkommen) in die Ausgabe kopiert.

+0

Dank @michael, das ist, was ich gesucht habe :) – Hikmat