XQuery - получает узлы из родительского соответствия заданному шаблону. - PullRequest
0 голосов
/ 02 октября 2018

Я хочу отфильтровать дочерние узлы узла XML в зависимости от заданного шаблона.

Мой XML

<parent>
  <total1>10</total1>
  <total2>15</total2>
  <value1>1</value1>
  <value2>2</value2>
</parent>

Отфильтровать узел, соответствующий данномуpattern

total*

Ожидаемый результат

<parent>
  <total1>10</total1>
  <total2>15</total2>
</parent>

Я пытался работать с этим xQuery, но он не работает.Я не знаю, как лучше всего справиться с этим

for $n in //parent/*[starts-with(.,total)]
return $n

Кроме того, я хотел бы иметь возможность отображать на выходе что-то подобное

<total1>number(10)</total1>
<total2>number(15)</total2>

на выходе, чтобы преобразовать значение узла из строки в число.number(10) от number(text())

1 Ответ

0 голосов
/ 02 октября 2018

Два небольших исправления:

  • Вам необходимо проверить имя элемента;в противном случае будет проверено, будет ли строковое значение элемента начинаться с заданной подстроки.
  • total необходимо заключить в кавычки;в противном случае оно будет рассматриваться как выражение XPath.

Вот результат:

for $n in //parent/*[starts-with(name(), 'total')]
return $n
...