Tengo una variable externa entrando como una cadena y me gustaría hacer un cambio/caso en ella. ¿Cómo hago eso en xquery?¿Cómo se enciende una cadena en XQuery?
Respuesta
A partir de XQuery 1.1, utilice el interruptor:
http://www.w3.org/TR/xquery-11/#id-switch
switch ($animal)
case "Cow" return "Moo"
case "Cat" return "Meow"
case "Duck" return "Quack"
default return "What's that odd noise?"
XQuery no tiene una función para encender nada que no sean elementos.
Lo primero que debe hacer es convertir su cadena en un elemento.
let $str := "kitchen"
let $room := element {$str} {}
Entonces sólo tiene que utilizar typeswitch hacer un interruptor normal:
return typeswitch($room)
case element(bathroom) return "loo"
case element(kitchen) return "scullery"
default return "just a room"
Tenga en cuenta, esto puede ser una única solución MarkLogic.
sólo tiene que utilizar una serie de expresiones: si
if ($room eq "bathroom") then "loo"
else if ($room eq "kitchen") then "scullery"
else "just a room"
El uso de un typeswitch se esconde lo que realmente está haciendo.
Cuál de estos métodos es más eficiente dependerá del procesador XQuery que esté utilizando. En un mundo ideal, solo debería ser una cuestión de gusto, ya que el optimizador debe seleccionar el método apropiado, pero si el rendimiento es importante, vale la pena comparar ambas versiones. Me sorprendería mucho que un procesador optimizara la construcción de nodos de su ejemplo y no optimizara mi ejemplo para un conmutador especializado.
A veces es agradable y elegante ocultar lo que realmente hace si no olvida que lo está haciendo ... – Ar3s
Abajo he votado esto porque la pregunta está tratando de encontrar la sintaxis de switch/case not if/else. – Sixty4Bit
@ Sixty4Bit - Cuando respondí la pregunta, no se finalizó el comportamiento del cambio, ¡por eso publiqué mi segunda respuesta en febrero! –
Para sajona, se puede usar algo como esto:
declare function a:fn($i) {
typeswitch ($i)
case element(a:elemen1, xs:untyped) return 'a'
case element(a:elemen2, xs:untyped) return 'b'
default return "error;"
};
Saludos,
http://rrusin.blogspot.com/2010/01/embedding-xquery-in-java.html
Si el procesador es compatible XQuery 1.1, a continuación, sólo tiene que hacer:
switch ($room)
case "bathroom" return "loo"
case "kitchen" return "scullery"
default return "just a room"
- 1. Cómo usar XQuery en C#
- 2. ¿Cómo enciende y apaga un monitor desde una aplicación Java?
- 3. Cómo descodificar XML escapado con xQuery
- 4. global.asax Application_Error no enciende
- 5. ¿Cómo puedo formatear un decimal en xquery?
- 6. ¿Cómo migro una aplicación a iOS 5? (o enciende ARC)
- 7. Delphi 7 enciende auto completar
- 8. ¿Cómo puedo eliminar nodos duplicados en XQuery?
- 9. cómo se divide una cadena con una cadena en C#
- 10. Debug XQuery Program
- 11. Cómo devolver el primer resultado de XQuery
- 12. Biblioteca de XQuery en Python
- 13. SendMessage/SC_MONITORPOWER no se enciende monitor en cuando se ejecuta Windows 8
- 14. Android: onScrollStateChanged SCROLL_STATE_IDLE a veces no enciende
- 15. ¿Cómo uso QXmlQuery correctamente? (XQuery/XPath Qt)
- 16. xQuery LIKE-operator?
- 17. ¿Puedo declarar una variable global en xquery en Marklogic Server?
- 18. Cómo recuperar el nodo padre utilizando XQuery?
- 19. Pruebas unitarias XQuery
- 20. Inicio de servicio en segundo plano cuando Android enciende
- 21. En un pequeño ejemplo, ¿cómo se almacenan los datos en sram inicializados cuando se enciende el microcontrolador?
- 22. ¿Usando XQuery en Linq a SQL?
- 23. Ejecutar un XQuery con PHP
- 24. Ponga cada resultado de XQuery en una nueva línea
- 25. Obtiene el elemento más repetido en una secuencia con XQuery
- 26. SQL Xquery Cómo reemplazar texto en Consulta de actualización
- 27. Cómo suprimir la sangría para la salida XML en XQuery
- 28. Explicar xpath y xquery en términos simples
- 29. ¿Cómo se analiza una url de una cadena en Android?
- 30. En Java, ¿cómo se convierte una Cadena en un char o un char en una Cadena?
Esta solución (debería) funciona en cualquier procesador de xquery, pero no es tan clara como la sencilla anidada si la solución. –
Solo odio anidar si. Me gusta el ejemplo de XQuery 1.1, así que lo marqué como la respuesta. – Sixty4Bit