Wie kombiniere ich Ergebnisse von Zip-Filter-Abfragen in einer XML-Struktur in Clojure?

8

Ich möchte die Ergebnisse von drei Zip-Filter-Abfragen in einem XML-Baum kombinieren. Das XML, das ich analysiere, sieht so aus:

%Vor%

In diesem Beispiel sehen Sie, dass <given_name> und <suffix> optional sind - nur <surname> ist erforderlich. Hier liegt mein Problem - wenn ich drei separate Abfragen ausführen, sind die Antworten, die ich bekomme, nicht mehr in Ordnung:

%Vor%

Nachdem ich diese drei Abfragen ausgeführt habe, bleiben mir drei Sequenzen übrig, deren Kardinalitäten nicht übereinstimmen; given_name und suffix haben die Länge 1, surname hat die Länge 2. Dies macht es mir unmöglich, die Komponenten jedes Namens zu kombinieren. Ich muss eine einzelne Abfrage schreiben, die diese Namensverkettung während der Sequenzkonstruktion ausführt.

Ich schaue mir die sehr spärliche Dokumentation für clojure.contrib.zip-filter.xml an und kann nicht herausfinden, wie ich das machen könnte (oder wenn es überhaupt möglich ist). Leider bin ich ein Clojure (und Lisp) Neuling! Kann jemand darauf hinweisen, wie ich eine Abfrage schreiben kann, die drei andere eingebettete Abfragen verketten wird?

    
Karl Jonathan Ward 13.01.2010, 15:27
quelle

2 Antworten

6

Sie können alle Teilbäume der Person in einem Schritt erhalten (xml- & gt; xmlzip: publication: contributors: person_name) und dann die Namensteile erhalten, wenn sie existieren (xml1- & gt; personzip: Nachname text) und sie mit dem Ergebnis kombinieren Sie möchten so:

%Vor%

Ergebnisse in ("Nachname A" "Nachname B, gegeben B, Suffix B")

    
Timothy Pratley 14.01.2010, 05:00
quelle
2

Ich nehme an, eine alternative Lösung ist

%Vor%

und verarbeiten Sie später jedes <person_name> .

    
Karl Jonathan Ward 13.01.2010 17:09
quelle