Я новичок в XQuery, и я просто хотел проверить и убедиться, что я сделал там первые несколько проблем правильно и посмотреть, есть ли какая-либо обратная связь.XQuery простые вопросы в первый раз
элементы Поиск принтеров с ценой менее 100
let $products := doc("products.xml")
for $e in $products/Products/Maker/Printer
where $e/Price < 100
return $e
Сделайте то же самое, но теперь производят последовательность этих элементов в окружении тега.
let $products := doc("products.xml")
for $e in $products/Products/Maker/Printer
where $e/Price < 100
return <CheapPrinters>$e</CheapPrinters>
products.xml
<Products>
<Maker name = "A">
<PC model = "1001" price = "2114">
<Speed>2.66</Speed>
<RAM>1024</RAM>
<HardDisk>250</HardDisk>
</PC>
<PC model = "1002" price = "995">
<Speed>2.10</Speed>
<RAM>512</RAM>
<HardDisk>250</HardDisk>
</PC>
<Laptop model = "2004" price = "1150">
<Speed>2.00</Speed>
<RAM>512</RAM>
<HardDisk>60</HardDisk>
<Screen>13.3</Screen>
</Laptop>
<Laptop model = "2005" price = "2500">
<Speed>2.16</Speed>
<RAM>1024</RAM>
<HardDisk>120</HardDisk>
<Screen>17.0</Screen>
</Laptop>
</Maker>
<Maker name = "E">
<PC model = "1011" price = "959">
<Speed>1.86</Speed>
<RAM>2048</RAM>
<HardDisk>160</HardDisk>
</PC>
<PC model = "1012" price = "649">
<Speed>2.80</Speed>
<RAM>1024</RAM>
<HardDisk>160</HardDisk>
</PC>
<Laptop model = "2001" price = "3673">
<Speed>2.00</Speed>
<RAM>2048</RAM>
<HardDisk>240</HardDisk>
<Screen>20.1</Screen>
</Laptop>
<Printer model = "3002" price = "239">
<Color>false</Color>
<Type>laser</Type>
</Printer>
</Maker>
<Maker name = "H">
<Printer model = "3006" price = "100">
<Color>true</Color>
<Type>ink-jet</Type>
</Printer>
<Printer model = "3007" price = "200">
<Color>true</Color>
<Type>laser</Type>
</Printer>
</Maker>
</Products>
Очень хорошо Спасибо! –
Несколько замечаний: 1. Вместо 'where $ e/@ price <200' более целесообразно использовать:' где $ e/@ price lt 200'. 2. Неверно, что '@price> 100' эквивалентно' @price <100'. Замечание 1. также имеет значение здесь. Помимо этих второстепенных вопросов, ответ в порядке - ни downvoting, ни upvoting. –
@DimitreNovatchev 1. '<' и 'lt' эквивалентны здесь, поскольку [узел XML не может иметь один и тот же атрибут дважды] (http://www.w3.org/TR/2006/REC-xml11-20060816/#attdecls). Но это, вероятно, очень хороший шанс указать @BumSkeeter на [различия между операторами сравнения] (http://www.w3schools.com/xquery/xquery_syntax.asp). 2. Спасибо, что указали на опечатку в эквиваленте XPath! Слишком много копировать/вставлять при установке в stackoverflow. :) –