xquery для преобразования атрибутов в теги - PullRequest
3 голосов
/ 19 ноября 2010

Я учусь на Xquery. У меня есть этот тег в моем XML-документе.

<element a="1" b="2" c="3" name="testgroupID">198</element>
<element a="11" b="12" c="13" name="testgroupverifyID" binary="hidden"/>

Могу ли я узнать, как создать что-то вроде следующего с помощью xquery?

<mytags>
    <a>1</a>
    <b>2</b>
    <c>3</c>
    <name>testgroupID</name>
    <value>198</value>
</mytags>
<mytags>
    <a>11</a>
    <b>12</b>
    <c>13</c>
    <name>testgroupverifyID</name>
    <binary>hidden</binary>
</mytags>

В настоящее время я могу использовать только статический способ, например:

$ tag: = $ x / @ a и затем верните его с {$ tag

Пожалуйста, советуйте. Большое спасибо.

1 Ответ

2 голосов
/ 19 ноября 2010

Это XQuery:

for $elem in /root/element
return element mytags {
          for $child in $elem/(@*|text())
          return element {if ($child instance of attribute())
                          then name($child)
                          else 'value'} {
                    string($child)
                 }
       }

Выход:

<mytags>
    <a>1</a>
    <b>2</b>
    <c>3</c>
    <name>testgroupID</name>
    <value>198</value>
</mytags>
<mytags>
    <a>11</a>
    <b>12</b>
    <c>13</c>
    <name>testgroupverifyID</name>
    <binary>hidden</binary>
</mytags>
...