這是我發佈的問題的一個副本here 我只需要注意到這發生在teiid引擎的XMLTABLE中。我解析以下XML內容:使用xpath加入屬性與節點值的多個連接在Teiid
<AttributeSets>
<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>
</AttributeSets>
使用
Select * From
XMLTABLE(XMLNAMESPACES(DEFAULT 'http://ns1',
'http://ns2/default.xsd' as ns2),
'AttributeSets/ns2:ItemAttributes' PASSING x.AttributeSets
COLUMNS
Creator STRING PATH 'string-join(//ns2:Creator/(@Role, node()) , '', '')'
) p;
這裏x.AttributeSets是從上面的內容的XML類型的變量。
我想格式化並將其組合成一行使用xpath。 喜歡的東西:
string-join(//ns2:Creator/concat(./text(), @Role), ', ')
我想,我是接近的地方,因爲這個:
string-join(//ns2:Creator/@Role , ', ')
的作品,給我一個逗號分隔的角色列表:基於role1,role2所,Role3
這
string-join(//ns2:Creator/node(), ', ')
結合創作者的值:「創建者之一,創建者Ť我,造物主三「。
我想的
Role1: Creator One, Role2: Creator Two, Role3: Creator Three
最終輸出我能得到的最是:
string-join(//ns2:Creator/(@Role, node()) , ', ')
這所有角色和創作者用逗號分隔成一行。出於某種原因,concat運算符似乎沒有用。 請你幫忙。
謝謝!兩個版本都可以順利地按照需要工作! –