J'ai une variable externe qui se présente sous la forme d'une chaîne et j'aimerais y faire un interrupteur/boîtier. Comment est-ce que je fais cela dans xquery?Comment activer une chaîne dans XQuery?
Répondre
A partir de XQuery 1.1, utilisez l'interrupteur:
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 n'a pas de fonction pour activer autre chose que des éléments.
La première chose à faire est de convertir votre chaîne en un élément.
let $str := "kitchen"
let $room := element {$str} {}
Ensuite, il suffit d'utiliser typeswitch pour faire un interrupteur normal:
return typeswitch($room)
case element(bathroom) return "loo"
case element(kitchen) return "scullery"
default return "just a room"
S'il vous plaît noter, cela peut être une MarkLogic seule solution.
Il suffit d'utiliser une série d'expressions si:
if ($room eq "bathroom") then "loo"
else if ($room eq "kitchen") then "scullery"
else "just a room"
L'utilisation d'un typeswitch se cache ce que vous faites vraiment.
La méthode la plus efficace dépend du processeur XQuery que vous utilisez. Dans un monde idéal, cela ne devrait être qu'une question de goût, car c'est à l'optimiseur qu'il revient de choisir la méthode appropriée, mais si la performance est importante, il vaut la peine de comparer les deux versions. Je serais très surpris si un processeur optimisait la construction du nœud de votre exemple et n'optimisait pas mon exemple à un commutateur spécialisé.
Parfois, il est agréable et élégant de cacher ce que vous faites vraiment si vous n'oublier pas que vous le faites ... – Ar3s
J'ai voté parce que la question tente de trouver la syntaxe de commutateur/cas pas si/sinon. – Sixty4Bit
@ Sixty4Bit - Quand j'ai répondu à la question, le comportement de switch n'était pas finalisé, c'est pourquoi j'ai posté ma deuxième réponse en février! –
Pour Saxon, vous pouvez utiliser quelque chose comme ceci:
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;"
};
Cordialement,
http://rrusin.blogspot.com/2010/01/embedding-xquery-in-java.html
Si votre processeur prend en charge XQuery 1.1, vous pouvez simplement faire:
switch ($room)
case "bathroom" return "loo"
case "kitchen" return "scullery"
default return "just a room"
- 1. Comment puis-je sélectivement activer une chaîne?
- 2. comment XQUERY est réellement utilisé?
- 3. Comment activer JMX dans Websphere?
- 4. Comment retourner le premier résultat de XQuery
- 5. XQuery: comment concaténer deux constructeurs en retour?
- 6. Obtention d'un document XML dans XQuery
- 7. Comment insérer une chaîne dans une autre chaîne?
- 8. Utiliser XQuery dans Linq To SQL?
- 9. Comment puis-je supprimer des noeuds en double dans XQuery?
- 10. Préservation des balises HTML dans XQuery
- 11. Comment activer le défilement horizontal dans une clistbox vC++?
- 12. comment casser une chaîne dans la sous-chaîne dans Excel?
- 13. Activer une DLL injectée dans Windows
- 14. JQuery: Activer les valeurs d'entrée de tableau dans une optimisation de la chaîne
- 15. Delphi et XQuery/XPath 2.0?
- 16. Trouver une chaîne dans une chaîne
- 17. Comment activer l'indentation Javascript dans VisualStudio 2008?
- 18. Comment activer SSL SharePoint
- 19. Comment activer .htaccess dans httpd.conf sous XP?
- 20. Comment: activer les enquêtes anonymes dans sharepoint
- 21. Comment activer la connexion webHttp dans WCF?
- 22. comment créer un document XML à la volée avec xquery?
- 23. Comment vérifier un argument de date vide dans une fonction XQuery?
- 24. Exemple de xquery en html
- 25. Comment activer l'intelligence pour UITextField dans iPhone
- 26. Comment activer jQuery Intellisense dans Aptana?
- 27. Comment activer l'option FastParse dans SSIS?
- 28. Comment faire une sous-chaîne dans jsp?
- 29. Comment formater conditionnellement une chaîne dans .Net?
- 30. Comment extraire une sous-chaîne dans Ant
Cette solution (devrait) travailler dans un processeur XQuery, mais pas aussi clair que la simple imbriqué si la solution. –
Je déteste juste imbriqué si. J'aime l'exemple de XQuery 1.1 donc je l'ai marqué comme réponse. – Sixty4Bit