これを試してください:
SELECT (xpath('./@name', parrot.node))[1] AS name
, unnest(xpath('./descriptor/text()', parrot.node)) AS descriptor
FROM (
SELECT unnest(xpath('./parrot', parrot_xml.document)) AS node
FROM parrot_xml
) parrot;
要求された出力を正確に生成します。
まず、サブクエリで、オウムノード全体を取得します。行ごとに1つのノード。
次に、xpath()を使用して名前と記述子を取得します。どちらも配列です。 name
の最初の(そして唯一の)要素を取ります descriptor
を分割します `unnest()を使用して配列を作成し、目的の結果を取得します。
関連する質問に対する包括的な回答 を作成しました 近々。興味があるかもしれません。