XQuery, как получить весь документ XML с помощью запроса WHERE

У меня есть XML db только с одной коллекцией (контейнером), и я не знаю имен документов. Как получить весь документ XML из db, который соответствует предложению WHERE?

<root>
      <node1>
            <node2>
                   <node3>My Content</node2>
            </node2>
      </node1>
<root>

Когда у меня есть вопросы

query 'collection("data1.dbxml")/root/node1/node2[node3 = "My Content"]/string()'

он возвращает контент с этого узла3

'My Content'

а также

query 'collection("data1.dbxml")/root/ode1/node2/node3'

возвращает 2 внутренних узла с содержимым

<node2><node3>My Content</node3></node2>

Но как получить весь документ, который соответствует этому предложению WHERE (например, SELECT * FROM data2.dbxml WHERE node3='My Content'?

2 ответа

Просто используйте предикат, как вы делали в первом примере:

  collection("data1.dbxml")/root[node1/node2/node3 = "My Content"]

Вы можете думать о предикате в XQuery как о ГДЕ в SQL, а SELECT-часть - это все, что было раньше.

Другое решение... после изучения:)

query 'for $x in collection("data1.dbxml") 
       where $x/root/node1/node2/node3 = "My Content"
       return $x'

или когда мы знаем глубину узла в XMLdoc и имя узла

query 'for $x in collection("data1.dbxml") 
       where $x/*/*/*/node3 = "My Content"
       return $x'

спасибо W3Schools

Другие вопросы по тегам