我刚刚举了一个例子来说明我会问你什么:
=>是否可以创建变量,将数据放入其中,并以与操作路径相同的方式操纵此变量的返回?
以下代码,
let $variable :=(for $pou in blabla/blabla
return (element thing {attribute status {data($pou/name)},
let $thing2 := for $z in $pou/bacon[@status="c"]
return element thing3 {data($z/code)} return($thing2) })) return()
会做类似
的事情<thing>
<thing2><thing3></thing3>
</thing2>
</thing>
可以使用“ $ variable / thing2 ”访问之前创建的结构中的标记吗???
let $variable :=(for $pou in adress/blablalba/adresse/blabla/blabla
return (element thing {attribute status {data($pou/name)},
let $thing2 := for $z in $pou/bacon[@status="c"]
return element thing3 {data($z/code)} return($thing2) })) return($variable/thing2)
在我的真实项目中,我创建了多个在启动时正确显示的变量,但是当我尝试访问/引用它们时它不起作用,我开始相信你不能访问变量中的内容同样的方式?但是我有点卡住了!
我希望你理解我的问题,因为我承认这是非常糟糕的解释
干杯
答案 0 :(得分:1)
是的,你可以做你想做的事。你得到的错误不是因为你想要做的事情是不可能的,而是因为你的路径表达不正确。
为了说明XPath表达式可以在查询中构造其值的变量中成功导航,请考虑以下查询:
let $variable := <a><b>10</b><b>20</b><b>30</b></a>
return $variable/b[number(.) lt 25]
这将返回b
元素的子元素中前两个a
元素,即$variable
的值。
在您的示例中,您将$variable
绑定到一系列thing
元素,每个元素都包含一系列thing3
元素。然后,您尝试检索一个thing2
元素,该元素不可能存在(查询中唯一出现的字符串thing2
作为变量的名称)。