2017-04-26 4 views
0

Ich verwende <xsl:number>, um <proceduralStep> zu zählen. (Ich bin mit Antenna House 6,2)Ausschließen von Elementen mit bestimmten Attributwert von xsl: Nummer

<xsl:number count="proceduralStep" from="content" level="multiple" format="1.1.1.1.1"/> 

Aber ich will jede proceduralStep auszuschließen, die ein Elternteil oder ein Kind mit dem Attribut hat @changeType='delete'

Die XML wie eine dieser aussehen könnte:

<proceduralStep><para>Install This.</para></proceduralStep> 
    <proceduralStep><para changeMark="1" changeType="delete">Delete this line.</para></proceduralStep> 
    <proceduralStep><para>Continue with ths</para></proceduralStep> 

    <proceduralStep><para><changeInline changeMark="1" changeType="delete">And this line.</changeInline></para></proceduralStep> 

    <proceduralStep><para>Continue with this</para></proceduralStep> 
<revst changeMark="1" > 
    <proceduralStep><para>Turn the screw....</para></proceduralStep> 
    <proceduralStep><para>Hold assembly tool....</para></proceduralStep> 
    </revst> 

Und die Ausgabe wie diese

1.2.11 Install This 
      Delete this line 
    1.2.12 Continue with ths 

das andere Problem ist wh aussehen sollte

1.2.13 Continue with this 
    1.2.1 Turn the screw.... 
    1.2.2 Hold assembly tool... 

statt:

1.2.13 Continue with this 
    1.2.14 Turn the screw.... 
    1.2.15 Hold assembly tool... 

<xsl:number count="ancestor-or-self::*[changeType!='delete']" from="content" level="multiple" format="1.1.1.1.1"/>

führt den Fehler: en <revst> als Wrapper für <proceduralStep>, wird die Nummerierung neu gestartet werden nur 'Kind' und 'Attribut' Achsen erlaubt in einem Match-Muster außerhalb Prädikate

Antwort

1

But I want to exclude any proceduralStep that has a parent or child with attribute @changeType='delete'

proceduralStep mit Ausnahme derjenigen zu zählen, die einen untergeordneten Knoten mit dem Attribut @changeType='delete' Verwendung haben:

count="proceduralStep[not(*/@changeType = 'delete')]" 

diese auch zu übergeordneten Knoten zu erweitern, können Sie:

count="proceduralStep[not(*/@changeType = 'delete' or parent::*/@changeType = 'delete')]" 

Beachten Sie, dass a!=b ist nicht dasselbe wie not(a=b).

+0

Vielen Dank! Das funktioniert großartig. Ich verstehe nicht, warum 'a! = B 'nicht gleichbedeutend ist mit' nicht (a = b) '(Ich habe immer noch das Problem, dass das Umbrechen' 'die Nummerierung auf dieser Ebene neu startet .) – Caroline

+0

** 1. ** Weil 'a! = B '** nicht ** wahr zurückgibt, wenn' a 'nicht existiert. ** 2. ** Ich vermute, du willst 'level =" any "' verwenden. Ganz sicher, mit Ihrem Beispiel. –

+0

Die 'level = multiple' wird für verschachtelte Schritte benötigt, also werde ich daran arbeiten. Schade, weil 'level =" any "richtig nummeriert ist. Du warst wirklich hilfreich, Michael, ich weiß es zu schätzen! – Caroline

Verwandte Themen