2016-11-10 3 views
1

Ich habe den folgenden XML-Inhalt:Verbinden Sie mehrere Verkettungen von Attributen mit Knotenwerten mit XPath

<ns2:ItemAttributes xml:lang="de-DE"> 
    <ns2:Creator Role="Role1">Creator One</ns2:Creator> 
    <ns2:Creator Role="Role2">Creator Two</ns2:Creator> 
    <ns2:Creator Role="Role3">Creator Three</ns2:Creator> 
</ns2:ItemAttributes> 

Ich versuche, diese in eine Zeile zu formatieren und kombinieren XPath. Etwas wie:

string-join(//ns2:Creator/concat(./text(), @Role), ', ') 

denke ich, sie ist irgendwo in der Nähe, weil dies:

string-join(//ns2:Creator/@Role , ', ') 

Werke und mir eine durch Kommata getrennte Liste von Rollen gibt: Role1, Role2, Role3

und diese

string-join(//ns2:Creator/node(), ', ') 

kombiniert die Werte der Schöpfer: „Schöpfer One, Schöpfer T Wo, Schöpfer Drei ".

ich die endgültige Ausgabe von

Role1: Creator One, Role2: Creator Two, Role3: Creator Three 

Könnten Sie bitte helfen möchten.

+0

Ein bisschen näher mit: string-join (// ns2: Ersteller/(@ Role, node()), ',') Jetzt habe ich alle Werte, aber nicht so hübsch - sie sind alle Komma -getrennt –

Antwort

0

Sie benötigen @Role als ersten Parameter auf Ihren Anruf zu concat() auszuwählen, und verwenden . den String-Wert des Kontextknotens auszuwählen:

string-join($xml//ns2:Creator/concat(@Role, ': ', .), ', ') 

Statt . Sie auch string() oder string(.) verwenden können, die wird ausdrücklich die Umwandlung, die sonst implizit geschehen würde:

string-join($xml//ns2:Creator/concat(@Role, ': ', string(.)), ', ') 

Returns:

+0

Danke, aber aus irgendeinem Grund in diesem Fall bekomme ich keine Werte. Die Ausgabe wird: ":,:" So fängt es die beiden Items ab, der Doppelpunkt mit einem Leerzeichen, bekommt aber keine Werte –

+0

@EugeneBykov Dann vermute ich, dass du etwas über die Abfrage oder die Daten geändert hast, weil ich das getestet habe auf den gleichen Daten, die Sie in Ihrer Frage angeben und die Ausgabe ist korrekt. – wst

+0

Dies ist innerhalb Teiid sql, kann dies wichtig sein ... Die concat Verarbeitung zum Beispiel ... –

Verwandte Themen