Frage

ich habe ein Problem Filterung bestimmte Knoten eines hase jcr in Magnolie.

wenn ich einreichen folgende Abfrage: //element(*, standort)//*

i erhalten:

33 nodes returned in 18ms
/standort/Standorte/MetaData
/standort/Standorte/standort-de
/standort/Standorte/standort-de/MetaData
/standort/Standorte/standort-de/Teststandort
/standort/Standorte/standort-de/Teststandort/MetaData
/standort/Standorte/standort-de/Hauptwerk-Köln
/standort/Standorte/standort-de/Hauptwerk-Köln/MetaData
/standort/Standorte/standort-de/Geschäftsstelle-Berlin
/standort/Standorte/standort-de/Geschäftsstelle-Berlin/MetaData
/standort/Standorte/standort-de/Geschäftsstelle-Frankfurt
/standort/Standorte/standort-de/Geschäftsstelle-Frankfurt/MetaData
/standort/Standorte/standort-de/Geschäftsstelle-Hamburg
/standort/Standorte/standort-de/Geschäftsstelle-Hamburg/MetaData
/standort/Standorte/standort-de/Geschäftsstelle-Hannover
/standort/Standorte/standort-de/Geschäftsstelle-Hannover/MetaData
/standort/Standorte/standort-de/Geschäftsstelle-Köln
/standort/Standorte/standort-de/Geschäftsstelle-Köln/MetaData
/standort/Standorte/standort-de/Werk-Leipzig
/standort/Standorte/standort-de/Werk-Leipzig/MetaData
/standort/Standorte/standort-de/Geschäftsstelle-München
/standort/Standorte/standort-de/Geschäftsstelle-München/MetaData
/standort/Standorte/standort-de/Geschäftsstelle-Stuttgart
/standort/Standorte/standort-de/Geschäftsstelle-Stuttgart/MetaData
/standort/Standorte/standort-de/Gelsdorf-(Mischwerk)
/standort/Standorte/standort-de/Gelsdorf-(Mischwerk)/MetaData
/standort/Standorte/standort-de/Gelsdorf-(Handläufe)
/standort/Standorte/standort-de/Gelsdorf-(Handläufe)/MetaData
/standort/Standorte/standort-de/KB-Roller-Tech-Kopierwalzen-GmbH
/standort/Standorte/standort-de/KB-Roller-Tech-Kopierwalzen-GmbH/MetaData
/standort/Standorte/standort-en
/standort/Standorte/standort-en/MetaData
/standort/Standorte/standort-en/Böttcher-UK-Ltd-
/standort/Standorte/standort-en/Böttcher-UK-Ltd-/MetaData

Aber ich möchte nur die Knoten:

/standort/Standorte/standort-de/Teststandort
/standort/Standorte/standort-de/Hauptwerk-Köln
/standort/Standorte/standort-de/Geschäftsstelle-Berlin
/standort/Standorte/standort-de/Geschäftsstelle-Frankfurt
/standort/Standorte/standort-de/Geschäftsstelle-Hamburg
/standort/Standorte/standort-de/Geschäftsstelle-Hannover
/standort/Standorte/standort-de/Geschäftsstelle-Köln
/standort/Standorte/standort-de/Werk-Leipzig
/standort/Standorte/standort-de/Geschäftsstelle-München
/standort/Standorte/standort-de/Geschäftsstelle-Stuttgart
/standort/Standorte/standort-de/Gelsdorf-(Mischwerk)
/standort/Standorte/standort-de/Gelsdorf-(Handläufe)
/standort/Standorte/standort-de/KB-Roller-Tech-Kopierwalzen-GmbH
/standort/Standorte/standort-en/Böttcher-UK-Ltd-

also ohne den Metadaten-Knoten und die Eltern-Knoten . Ich brauche alles unter Standorte. Die Kinder von Standorte kann Art von standort-de oder standort-en sein. Ich hoffe, ich konnte mein Problem klarer machen. Ich habe meine Ausgabe in der letzten Version meiner Frage verkürzt. Bisher habe ich fanden keine XPath-Ausdruck, der mir helfen könnte aus. Das ist aber aufgrund meiner fehlenden XPath-Kenntnisse.

Vielen Dank im Voraus!

War es hilfreich?

Lösung

Der Ausdruck

//element(*, standort)//*

wählt jedes Element (endgültiger *), der einen Abkömmling (zweiter //) ein Element beliebige Stelle im Dokument (//element()) ist, die erfolgreich validiert gegen eine Schema definierten Typdefinition für standort wurde. (Dank @Alej für die Unterstützung richtig diese Aussage und die folgenden.)

Also im Grunde Sie jedes Element auswählen, die ein Nachkomme eines validierten standort Element ist, vorausgesetzt, Sie haben ein Schema erfolgreich angebracht ..

Versuchen Sie den XPath-Ausdruck ( aktualisiert ):

/standort/Standorte/(standort-de | standort-en)/*

Andere Tipps

Mit

(//element(*, standort)//*)[not(ancestor-or-self::MetaData)]
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top