Xquery - добавление атрибута ко всем кортежам - PullRequest
0 голосов
/ 14 мая 2018

Надеюсь, у вас все очень хорошо.

Я немного застрял с проблемой в Xquery.

Предыстория проблемы

Я делал домашнее задание в xquery, где я должен создать рекурсивную функцию, которая запускается в стране, а затем рекурсивно вызывает граничащие страны и так далее. Например, в моем упражнении мы начинаем в Швеции, поэтому вызов first сгенерирует следующий код:

<country name="Norway"/>
<country name="Finland"/>

Для второго вызова мы получаем эти данные вместе с кортежем для России (поскольку Россия граничит с Финляндией). На третий звонок мы получаем целый ряд стран (граничащих с Россией).

Мне наконец-то удалось запустить рекурсию, и мне удалось добиться генерации стран, как описано выше.

Однако, есть одна вещь, которая отсутствует, и это количество шагов, которые нужно предпринять, чтобы добраться до каждой страны. У меня есть переменная для этого, но я неловко не могу заставить ее работать.

Описание проблемы

У меня есть переменная с именем $ borderingCountries , которая содержит следующие данные:

<name>Norway</name>
<name>Finland</name>

Также у меня есть переменная с именем $ step , которая имеет значение 1. Я хочу вставить это как атрибут для кортежей в $ borderingCountries , в идеале я хотел бы сделайте так, чтобы мои $ borderingCountries выглядели примерно так:

  <name steps = 1> Norway </name>
  <name steps = 1> Finland </name>

Где шаги это значение $ step

Заранее спасибо.

1 Ответ

0 голосов
/ 14 мая 2018

Если у вас есть элементы и вы хотите «добавить» атрибут, вам нужно воссоздать их с требуемым атрибутом

let $steps := 1,
    $countries := (<name>Norway</name>, <name>Finland</name>)
return $countries!<name steps="{$steps}">{data()}</name>

https://xqueryfiddle.liberty -development.net / 3Nqn5Y5

...