一个真正的xquery初学者问题,但我似乎无法解决我的问题。
我有一个XML数据库videos.xml,其中演员和电影作为节点存储(我认为?)
角色都有单独的id,但它们不是作为属性存储的,而是作为其他东西存储的(可能有一些内置的id属性吗?)所有电影都有一个或多个actorRef属性引用actor- id。
我现在要查询的是引用某个演员id的所有电影。假设基努·里维斯的ID是"001",那么我们想要找到所有引用这个ID的电影->例如《黑客帝国》和《魔鬼代言人》。有一些内置的功能吗?
同意评论者的意见,需要更多,但您似乎正在寻找函数族,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:IDREF
或xs:IDREFS
类型,该节点将具有is-idrefs
属性。)