Pregunta

Me gustaría convertir una cadena en un nodo.Tengo un método definido para tomar un nodo, pero el valor que tengo es una cadena (está codificado).¿Cómo convierto esa cadena en un nodo?

Entonces, dado un método XQuery:

define function foo($bar as node()*) as node() {
  (: unimportant details :)
}

Tengo una cadena que quiero pasar al método foo.¿Cómo convierto la cadena en un nodo para que el método acepte la cadena?

¿Fue útil?

Solución

Soluciones MarkLogic:

La mejor manera de convertir una cadena en un nodo es usar:

xdmp:unquote($string).

Por el contrario, si desea convertir un nodo en una cadena, usaría:

xdmp:quote($node).

Soluciones independientes del idioma:

El nodo a la cadena es:

fn:string($node)

Otros consejos

Si quieres crear un texto nodo fuera de la cadena, solo use un texto constructor de nodos:

text { "your string goes here" }

o si prefieres crear un elemento con el contenido de la cadena, puedes construir un elemento algo como esto:

element (some-element) { "your string goes here" }

Si está hablando de cadenas que contienen marcado XML, también existen soluciones estandarizadas (de XPath/XQuery Functions 3.0):

La respuesta a esta pregunta depende del motor que se utilice.Por ejemplo, los usuarios de sajón, utilizar el saxon:parse método.

El hecho es el XQuery La especificación no tiene una función incorporada para esto.

En términos generales, sólo necesitarías usar esto si necesitas extraer algunos elementos incrustados. XML a partir de una CDATA sección.De lo contrario, puede leer archivos desde el sistema de archivos o declarar XML directamente en línea.

En su mayoría, utilizaría la forma declarativa, en lugar de una cadena codificada, por ejemplo.(usando estudio Stylus)

declare namespace my = "http://tempuri.org";

declare function my:foo($bar as node()*) as node() {
    <unimportant></unimportant>
} ;

let $bar := <node><child></child></node>

return my:foo(bar)
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top