Узел XML, содержащий выражение XPath из другого файла XML - как получить его значение? - PullRequest
1 голос
/ 15 февраля 2012

Файл common.xml:

<common>
  <os1>Windows 7</os1>
</common>

Файл item.xml:

<item>
  <os>common/os1</os>
</item>

Таким образом, узел os в файле item.xml содержит выражение XPath, указывающее на узел в файле common.xml. Как я могу получить фактическое значение узла, указанного выражением XPath ( Windows 7 ). Если я использую $ input-context / item / os , я получаю common / os1 .

Я использую zorba-xquery и объявил:

declare variable $input-context external;
declare variable $common-context external;

1 Ответ

1 голос
/ 16 февраля 2012

Это можно сделать с помощью функции eval модуля отражения:

import module namespace reflection = "http://www.zorba-xquery.com/modules/reflection";

declare variable $common-context :=
  document {
    <common>
      <os1>Windows 7</os1>
    </common>
  };

declare variable $input-context :=
  document {
    <item>
      <os>common/os1</os>
    </item>
  };

let $path := $input-context/item/os/text()
let $query := fn:concat('$common-context/', $path, '/text()')
return
  reflection:eval($query)
...