XQuery: Создать новый элемент с именем?

У меня есть данные как:

    <td>USERID</td>

    <td>NAME</td>

    <td>RATING</td>

Я хочу преобразовать его в:

<userid></userid>
<name></name>
<rating></rating>

Как я могу сделать это?

13
задан Nick Heiner 30 March 2010 в 01:01
поделиться

1 ответ

Используйте конструктор вычисляемого элемента , чтобы сгенерировать элемент со значением нижнего регистра узлов текста для каждого из td ] элементы.

Конструктор вычисляемого элемента создает узел элемента, позволяя вычислить как имя, так и содержимое узла .

Для примера, предполагая, что ваш XML находится в файле с именем foo.xml , вы можете сделать что-то вроде этого:

<doc>
{
for $name in doc('foo.xml')//td/text()
return element {lower-case($name)} {''}
}
</doc>

, чтобы получить это:

<?xml version="1.0" encoding="UTF-8"?>
<doc>
 <userid/>
 <name/>
 <rating/>
</doc>

Вы также можете оценить функция lower-case () как часть выражения XPATH вместо конструктора элемента, например:

<doc>
{
for $name in doc('foo.xml')//td/text()/lower-case(.)
return element {$name} {''}
}
</doc>
22
ответ дан 1 December 2019 в 22:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: