0

シュレッドしたい XML があります。CROSS APPLY を実行して xsi:type ReferenceNode の QueryNode のみを取得しようとしていますが、.node をその xsi:type のみに制限する方法がわかりません。ここに私のXMLがあります

<QueryNode xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="TableNode">
<ChildNodes>
<QueryNode xsi:type="ReferenceNode">
</QueryNode>
</ChildNodes>
</QueryNode>

そして、これまでの私のクエリは次のとおりです。

SELECT      acode, x.l.value('.', 'VARCHAR(255)')
FROM        @originals as o
CROSS APPLY o.definition_xml.nodes('QueryNode/ChildNodes/QueryNode/@xsi:type') as x(l) 
4

1 に答える 1

1

XPath 述語 ( [.....]) を使用して、次のような特定の基準でターゲット要素をフィルタリングできます。

QueryNode/ChildNodes/QueryNode/@xsi:type[.="ReferenceNode"]

したがって、クエリ全体は次のようになります。

SELECT      acode, x.l.value('.', 'VARCHAR(255)')
FROM        @originals as o
CROSS APPLY o.definition_xml.nodes('QueryNode/ChildNodes/QueryNode/@xsi:type[.="ReferenceNode"]') as x(l) 
于 2015-11-16T10:57:36.267 に答える