Wenn der Kontext auf Division/Division/* Thema zeigt, wollte ich alle Themen Tags unter body/division zählen und auch Ergebnis der Zählung der vorherigen body/division/division-Tag hinzufügen.XPATH: Count Preceding Div-Element
Output = Alle Themen unter Körper/Division + Anzahl der Körper/Abteilung/Division
<?xml version="1.0" encoding="UTF-8"?>
<body>
<division>
<Atopic><longtitle>TitleDiv1 Atopic</longtitle></Atopic>
<Btopic><longtitle>TitleDiv1 Btopic</longtitle></Btopic>
<Ctopic><longtitle>TitleDiv1 Ctopic</longtitle></Ctopic>
<division>
<Atopic><longtitle>TitleDiv1.1 Atopic</longtitle></Atopic>
</division>
<division>
<Atopic><longtitle>TitleDiv1.2 Atopic</longtitle></Atopic>
</division>
</division>
<division>
<Atopic><longtitle>TitleDiv2 Atopic</longtitle></Atopic>
<Dtopic><longtitle>TitleDiv2 Dtopic</longtitle></Dtopic>
<division>
<Atopic><longtitle>TitleDiv2.1 Atopic</longtitle></Atopic>
</division>
<division>
<Ctopic><longtitle>TitleDiv2.2 Ctopic</longtitle></Ctopic>
</division>
</division>
</body>
So zum Beispiel
Wenn mein Kontext in Div 1/2 ist, die Logik sollte Zählen Sie alle * Themen unter body/division1. Also sollte es 3 (Atopic, Btopic, Ctopic) zurückgeben. Hier gibt es kein vorangestelltes Body/Division/Division-Element. So o/p = 3 + 0 = 3
2. Ähnlich von Div1/3 sollte es zählen die * Themen unter body/division-Tag, d. H. 3 und zählen auch vorhergehende body/div/div (d. H. 3 + 1 = 4).Wenn der Kontext Div2/1 ist, sollte der Zähler nur die * Themen unter body/division2 berücksichtigen.
Also, wenn ich die Logik von Div2/1 Atopic verwende, sollte es "2" zurückgeben, da Div2-Tag (Körper/Division) 2 Themen und keine vorhergehenden Körper/Div/Div hat. Ausgabe = 2. Hier sollte der vorhergehende Körper/Division/Division für Div2-Tag berücksichtigt werden und Div1's Körper/Division/Division sollte nicht berücksichtigt werden. Kurz gesagt sollte der Körper/Division/Division zurückgesetzt werden, wenn neue Körper/Division auftritt.
pls beratung.
Wie unterscheidet sich das von Ihrer vorherigen Frage: http://stackoverflow.com/questions/39531286/xpath-get-preceding-childrens –
P. S. Ihr Beispiel wäre viel klarer, wenn (a) die Divisionen ein eindeutiges ID-Attribut hätten und (b) die Themen eindeutige Namen hätten und (c) es richtig eingerückt wäre. Es ist auch nicht klar, was genau '.... DIV 1 ......' usw. sein sollen; Wenn sie Elemente sind, warum macht ihr sie nicht zu Elementen? –
hallo Michael, der Unterschied ist, ich muss auch Division/Division zu * topic, d. H. "Zählen (Vorfahren :: division [last()]/* [contains (name(), 'topic')])". Ihr Sol war vollkommen in Ordnung, wenn Sie die * Themen unter Body/Division betrachten. Aber ich brauche auch division/division, das zur Zählung hinzugefügt werden soll (ancestor :: division [last()]/* [contains (name(), 'topic']] result, so dass im context 1/3 zurückgegeben wird (3 Themen unter body/div und 1 div/div = 4) –