Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
for $i in doc('koatuu')//ITEM[CODE_PARTS/L1/text()='80'] return <ITEM>{$i/NAME/text()}</ITEM>
for $i in db:text("koatuu", "80")/parent::*:L1/parent::*:CODE_PARTS/parent::*:ITEM return element ITEM { ($i/NAME/text()) }
<QueryPlan>
<GFLWOR>
<For>
<Var name="$i" id="0"/>
<CachedPath>
<ValueAccess data="koatuu" type="TEXT">
<Str value="80" type="xs:string"/>
</ValueAccess>
<IterStep axis="parent" test="*:L1"/>
<IterStep axis="parent" test="*:CODE_PARTS"/>
<IterStep axis="parent" test="*:ITEM"/>
</CachedPath>
</For>
<CElem>
<QNm value="ITEM" type="xs:QName"/>
<CachedPath>
<VarRef>
<Var name="$i" id="0"/>
</VarRef>
<IterStep axis="child" test="NAME"/>
<IterStep axis="child" test="text()"/>
</CachedPath>
</CElem>
</GFLWOR>
</QueryPlan>
for $i in doc('koatuu')//L1[text()='80'] return <ITEM>{$i/../../NAME/text()}</ITEM>
<QueryPlan>
<GFLWOR>
<For>
<Var name="$i" id="0"/>
<CachedPath>
<ValueAccess data="koatuu" type="TEXT">
<Str value="80" type="xs:string"/>
</ValueAccess>
<IterStep axis="parent" test="*:L1"/>
</CachedPath>
</For>
<CElem>
<QNm value="ITEM" type="xs:QName"/>
<CachedPath>
<VarRef>
<Var name="$i" id="0"/>
</VarRef>
<IterStep axis="parent" test="node()"/>
<IterStep axis="parent" test="node()"/>
<IterStep axis="child" test="NAME"/>
<IterStep axis="child" test="text()"/>
</CachedPath>
</CElem>
</GFLWOR>
</QueryPlan>
for $p in doc('company')/Persons/Person[@name='Vasya']
for $d in doc('company')/Departments/Department where $d/Stuff/personRef=$p/@id
return <department>$d/@name</department>
let $VasiaIDs := doc('company')/Persons/Person[@name='Vasya']/@id
(: Выбираем айдишки и заносим их в последовательность (sequence) :)
for $d in doc('company')/Departments/Department[Stuff/personRef/text()=$VasiaIDs]
(: Перебираем департаменты, у которых в ссылках на персоны, есть хоть один элемент из множества $VasiaIDs :)
return <department>$d/@name</department>
(: Возвращаем нужный департамент :)
//item[@id='news-123']
//item/tag[@id='video']/.. или //item[./tag[@id='video']]
Первый выдает все элементы tag c id='video'
tag[@id="video"]
и берет его родителя (те самые две точки).А где в этом запросе написано что он относится к news.xml, а не к какому либо другому файлу?
mydb
, то доступ к документам и содержимому в ней будет через collection('mydb')/root/a/b
collection('mydb')//item[tag[@id]]
collection('mydb')//item[tag[@id='видео']]
BaseX. Неизвестная NoSQL Вселенная