tengo datos como:XQuery: ¿crear un nuevo elemento con un nombre de pila?
<td>USERID</td>
<td>NAME</td>
<td>RATING</td>
quiero transformarlo en:
<userid></userid>
<name></name>
<rating></rating>
¿Cómo se puede hacer esto?
tengo datos como:XQuery: ¿crear un nuevo elemento con un nombre de pila?
<td>USERID</td>
<td>NAME</td>
<td>RATING</td>
quiero transformarlo en:
<userid></userid>
<name></name>
<rating></rating>
¿Cómo se puede hacer esto?
Utilice un computed element constructor para generar un elemento con el valor lower-case
de los text
nodos para cada uno de los td
elementos.
Un constructor elemento computarizada crea un nodo de elemento, lo que permite tanto el nombre y el contenido del nodo a calcular.
Por el bien del ejemplo, suponiendo que el código XML se encuentra en un archivo llamado foo.xml, se podría hacer algo como esto:
<doc>
{
for $name in doc('foo.xml')//td/text()
return element {lower-case($name)} {''}
}
</doc>
para producir este:
<?xml version="1.0" encoding="UTF-8"?>
<doc>
<userid/>
<name/>
<rating/>
</doc>
También podría evaluar la función lower-case()
como parte de la expresión XPATH en lugar del elemento constructor, li ke esto:
<doc>
{
for $name in doc('foo.xml')//td/text()/lower-case(.)
return element {$name} {''}
}
</doc>
return <doc>{
for $d in $doc/element()/text()
return element{fn:lower-case($d)} {}}</doc>
donde $ doc almacena el código XML.