2017-07-21 3 views
2

Ich erstelle einen Bericht, der Informationen aus einer XML-Datei abruft.XPath 1.0: Listen Sie eindeutige Werte mit der Anzahl ihrer Vorkommen auf

Im Grunde habe ich bisher einen XPath-Ausdruck zusammengestellt, der die einzelnen Geräte auflistet. Es gibt drei Geräte im obigen XML (A, B und C). Unten ist der XPath-Ausdruck.

Ich bin auf XPath 1.0 beschränkt, sonst würde ich die distinct-values ​​() -Funktion verwenden. Als nächstes möchte ich die Anzahl für jedes der im ersten XPath-Ausdruck aufgelisteten Geräte zurückgeben. Zum Beispiel würde die XML von oben geben Sie mir die folgenden zählt:

A: 3
B: 2
C: 2

Ist es möglich, sowohl die Namen zurückzukehren und in einem einzigen Ausdruck zählen ? Wenn nicht, gibt es einen XPath-Ausdruck, der nur die Zählwerte für jedes einzelne Gerät zurückgibt. Ich werde nie wissen, wie viele verschiedene Geräte sich im Bericht befinden oder welche Werte für das Device-Element gelten. Daher kann ich nicht einfach count() - Funktionen für einen bestimmten Gerätenamen schreiben.

Vielen Dank im Voraus!

+0

In welcher Umgebung läuft dieser XPath 1.0? –

+0

@ThomasW, ich werde es als SmartName in Esko Automation Engine verwenden. –

+0

Ich hatte nur einen kurzen Blick auf die Dokumentation, aber es scheint mir, dass Sie einen Script SmartName verwenden könnten. Nicht sicher, ob XPath-Abfragen in der JavaScript-Engine von Esko unterstützt werden, aber Sie können das Dokument immer mit JavaScript selbst durchlaufen. –

Antwort

1

Wenn Sie auf XPath 1.0 beschränkt sind, ist dies mit einer einzelnen Abfrage nicht möglich. Sie würden einen Zwei-Durchlauf-Prozess benötigen. Wenn Sie diese Abfragen programmgesteuert ausführen, verwenden Sie die entsprechende Programmiersprache (XSLT, PHP, JavaScript), um Abfragen basierend auf den Ergebnissen der ersten Abfrage auszulösen.

count(/JoinedRoot/FlexoPlateReport/Device[.='A']) 
Verwandte Themen