2017-10-31 2 views
0

Ich habe eine Suche gehabt, aber kämpfend, um eine Antwort zu finden, die ich verstehe/verwenden kann. Grundsätzlich muss ich einen xpath verwenden, der unter bestimmten Umständen ein Datum mit heute vergleicht.Fälle in Xpath zählen, wo das Datum in den letzten sechs Monaten ist

Die XML-Block enthält mehrere Kontoaufzeichnungen ich Abfragen, einen Auszug Beispiel eines Blocks unten mit relevanten Daten:

<acc> 
    <default> 
    <defdate>2017-07-01</defdate> 
    <defsatdate>2017-09-01</defsatdate> 
    </default>  
</acc> 

ich zählen müssen, wie viele Konten ein defdate innerhalb der letzten sechs Monate haben, heute, aber wo das Konto nicht erfüllt wurde. Das ist, wo defdate anwesend ist und innerhalb der letzten sechs Monate, und defsatdate ist NICHT da. (Beachten Sie, wenn der Account nicht als Standard eingetragen ist, ist der Bereich überhaupt nicht vorhanden).

Beachten Sie, dass dieser XPath in einer Live-Umgebung ausgeführt wird, so dass der Datumsteil dynamisch sein muss und herausfinden, was heute ist, anstatt dass ich das im XPath beheben kann.

Also im obigen Beispiel war das Konto innerhalb der letzten sechs Monate ausgefallen, wurde aber auch erfüllt. Als solches würde es meine Zählung nicht geben.

Ich habe mir die Übersetzungsfunktion usw. angeschaut, bin aber immer noch ziemlich neu und habe so viel zu kämpfen!

Antwort

0
count(//acc[not(.//defsatdate) and 
      translate(.//defdate, '-','') <= '20171031' and 
      translate(.//defdate, '-','') >= '20170331']) 

(Zeilenumbrüche werden zur besseren Lesbarkeit hinzugefügt)

Notwendige Erklärungen

//acc[not(.//defsatdate)  - find `acc` without `defsatdate` 
translate(.//defdate, '-','') - remove dash from the string 
+0

Vielen Dank für diesen sehr, hoffentlich mit einem Teil der Abfrage hilft, ich bin die Hoffnung, irgendwie zu tun, die Datumsvergleich dynamisch, da der XPath in einer Online-Umgebung läuft (dh ich würde sagen <= heute und> = heute-6 Monate), wo das System irgendwie das Systemdatum zum Zeitpunkt der Ausführung des X-Pfads überprüft? Wäre das abhängig von dem System, in dem die Suche läuft, oder gibt es eine Xpath-Funktion für heute()? – Rebecca

+0

Zumindest xpath 1.0 kann dies nicht tun. Ich benutze einen Trick, um Datum in Ganzzahl zu konvertieren, sortiert als Datum. Sie sollten die Daten in der Programmiersprache festlegen. Es ist nicht schwer – splash58

+0

Vielen Dank Ich dachte, das könnte der Fall sein – Rebecca

Verwandte Themen