XQuery: создать новый элемент с заданным именем? У меня есть данные вроде: <td>USERID</td> <td>NAME</td> <td>RATING</td> Я хочу преобразовать его в: <userid></userid> <name></name> <rating></rating> Как я могу это сделать? Ответ 1 Используйте конструктор вычисляемых элементов для создания элемента со значением lower-case узлов text для каждого из элементов td. A конструктор вычисляемых элементовсоздает элемент node, что позволяет имя и содержимое nodeдля вычисления. Для примера, предположив, что ваш 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> Ответ 2 return <doc>{ for $d in $doc/element()/text() return element{fn:lower-case($d)} {}}</doc> где $doc хранит Xml.
Ответ 1 Используйте конструктор вычисляемых элементов для создания элемента со значением lower-case узлов text для каждого из элементов td. A конструктор вычисляемых элементовсоздает элемент node, что позволяет имя и содержимое nodeдля вычисления. Для примера, предположив, что ваш 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>
Ответ 2 return <doc>{ for $d in $doc/element()/text() return element{fn:lower-case($d)} {}}</doc> где $doc хранит Xml.