XQuery和idref

时间:2016-09-29 15:35:42

标签: xml database xquery xml-database

一个真正的XQuery初学者问题,但我似乎无法解决我的问题。

我有一个XML数据库videos.xml,其中演员和电影存储为节点(我认为?)

演员们都有不同的ID,但是他们不是作为属性存储而是作为其他东西存储(是否有一些ID的内置属性?)。电影都有一个或几个引用actor-ID的actorRef属性。

我现在要查询的是所有引用某个actor-id的电影。假设Keanu Reeves的ID为“001”,那么我们想找到所有引用此ID的电影 - >例如矩阵与魔鬼的倡导者。这有什么内置功能吗?

1 个答案:

答案 0 :(得分:0)

同意评论者需要更多内容,但您似乎正在寻找函数系列fn:id()fn:idref()以及XPath和XQuery函数和运算符规范3.1版的新功能,fn:element-with-id()。以下是从规范中获得的一些插图:

let $emp :=
    <employee xml:id="ID21256">
        <empnr>E21256</empnr>
        <first>John</first>
        <last>Brown</last>
    </employee>

表达式id('ID21256')/name()返回"employee"。 (xml:id属性具有is-id属性,因此选择了employee元素。)。

表达式element-with-id('E21256')/name()也会返回"employee"。 (假设作为模式验证的结果,empnr元素被赋予类型xs:ID,该元素将具有is-id属性,因此被选中。)

表达式idref('ID21256')将返回引用employee元素的任何元素或属性。 (假设作为模式验证的结果,引用节点被赋予类型xs:IDREFxs:IDREFS,该节点将具有is-idrefs属性。)