Bir dize olarak gelen bir dış değişken var ve üzerinde bir anahtar/kasa yapmak istiyorum. Bunu xquery'de nasıl yaparım?XQuery'de bir dizeyi nasıl açıyorsunuz?
cevap
, kullanmak anahtarı:
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, öğeler dışındaki herhangi bir şeyi açmak için bir işlevi yoktur.
Yapacağınız ilk şey dizginizi bir öğeye dönüştürmektir. ,
return typeswitch($room)
case element(bathroom) return "loo"
case element(kitchen) return "scullery"
default return "just a room"
unutmayın bu bir MarkLogic tek çözüm olabilir:
let $str := "kitchen" let $room := element {$str} {}
Sonra sadece normal bir anahtar yapmaya typeswitch kullanın. if ($room eq "bathroom") then "loo"
else if ($room eq "kitchen") then "scullery"
else "just a room"
bir typeswitch kullanarak gerçekten ne yaptığını saklandığını:
Sadece ifadeler eğer bir dizi kullanın.
Bu yöntemlerden hangisinin daha verimli olduğu, kullandığınız XQuery işlemcisine bağlı olacaktır. İdeal bir dünyada, yalnızca uygun bir yöntem seçmek için optimizatöre olması gerektiği gibi, sadece bir tat meselesi olmalıdır, ancak performans önemliyse, her iki versiyonu da karşılaştırmaya değer. Bir işlemci örneğinizin düğüm yapısını optimize ettiyse ve örneğimi özel bir anahtarla optimize etmemiş olsaydım çok şaşırırdım. Eğer böyle bir şey kullanabilirsiniz
Saxon içinBazen yapmakta olduğunuzu unutmazsanız gerçekten ne yaptığınızı gizlemek güzel ve zariftir ... – Ar3s
Bunu reddettim çünkü soru anahtarın/kasanın sözdizimini bulmaya çalışıyor çünkü/else. – Sixty4Bit
@ Sixty4Bit - Soruyu cevapladığımda anahtarın davranışı kesinleşmedi, bu yüzden Şubat ayında ikinci cevabımı yayınladım! –
,: Eğer işlemci XQuery'yi 1.1 destekliyorsa
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;"
};
Saygılarımızla,
http://rrusin.blogspot.com/2010/01/embedding-xquery-in-java.html
, o zaman basitçe yapabilirsiniz:
switch ($room)
case "bathroom" return "loo"
case "kitchen" return "scullery"
default return "just a room"
XQuery 1.1 ile başlayarak 0
- 1. Bir hxs dosyasını nasıl açıyorsunuz?
- 2. Python: Ayrı bir çıktı dosyasını nasıl açıyorsunuz?
- 3. iPhone LED'i Xamarin ile nasıl açıyorsunuz?
- 4. Bir dizeyi
- 5. NetBeans çıkış konsolundaki sarılmış modu nasıl açıyorsunuz?
- 6. QTKit, giriş cihazlarını mı açıyorsunuz?
- 7. Bir dizeyi
- 8. Bir dizeyi Io'deki bir listeye nasıl dönüştürebilirim?
- 9. Sabit biçimdeki bir dizeyi
- 10. Biçimlendirme yer tutucularıyla bir dizeyi nasıl yerelleştirebilirim?
- 11. Dizeyi bir unicode karakterine nasıl dönüştürebilirim?
- 12. Qt'deki Ayırıcılara Göre Bir Dizeyi Nasıl Bölünebilirim?
- 13. Bir dizeyi birkaç değerle nasıl karşılaştırabilirim?
- 14. HTML için bir dizeyi nasıl kodlayabilirim?
- 15. Ortak lisp'de bir dizeyi tamsayıya nasıl dönüştürebilirim?
- 16. Lua'da, URL'de belirli bir dizeyi nasıl bulabilirim?
- 17. İki öznitelik dizeyi bir UILabel'de nasıl birleştiririm?
- 18. Büyük bir dizeyi java'daki tamsayıya nasıl dönüştürebilirim?
- 19. Bir dizeyi make olarak nasıl bölerim?
- 20. Diske gitmeden bir dizeyi FileStream'e nasıl yüklerim?
- 21. Grep kullanarak tam bir dizeyi nasıl arayabilirim?
- 22. Windows masaüstü gadget'ındaki ayarlar iletişim kutusunu program aracılığıyla nasıl açıyorsunuz?
- 23. iPhone'da iki dizeyi birleştirmek nasıl?
- 24. Karışık bir dizeyi sayılarla bölme
- 25. Kimin sorumluluğu bir dizeyi kodlamaktır?
- 26. Bir dizeyi kutusundan çıkarabilir miyim?
- 27. SQL'de iki dizeyi birleştirmek ve 0'larla bir dizeyi nasıl doldurulur?
- 28. Sınırlayıcı olmayan bir dizeyi C# kullanarak bir DateTime'a nasıl ayrıştırabilirim?
- 29. Python'da bir dizenin sonundan bir alt dizeyi nasıl kaldırırım?
- 30. Bir dizeyi bir enum üyesinin her üyesiyle nasıl ilişkilendirebilirim?
Bu çözüm (should) Herhangi xquery işlemcide çalışır ancak çözüm eğer basit iç içe olduğu kadar açık değildir olacaktır. –
Sadece iç içe olsaydım nefret ediyorum. Ben XQuery 1.1 örneğini beğendim, bu yüzden cevap olarak işaretledim. – Sixty4Bit