Loops 表达式中表达式的xquery计数

Loops 表达式中表达式的xquery计数,loops,for-loop,xquery,Loops,For Loop,Xquery,问题是,对于父项未知的表达式,如何计算a中的for表达式 代码: 让$act:=( 我认为您只需要将where子句更改为使用where$count/祖先::act是$data,即检查祖先act元素是否是绑定到外部for表达式的$data变量的元素。我认为您只需要更改where子句使用,其中$count/祖先::act是$data,即检查祖先act元素是否是绑定到外部for表达式的$data变量的元素。在您的代码中,当您对元素act进行迭代时,它们将被视为不同的片段。因此,您应该首先合并所有act

问题是,对于父项未知的表达式,如何计算a中的for表达式

代码:

让$act:=(

我认为您只需要将
where
子句更改为使用
where$count/祖先::act是$data
,即检查祖先
act
元素是否是绑定到外部
for
表达式的
$data
变量的元素。

我认为您只需要更改
where
子句使用,其中$count/祖先::act是$data
,即检查祖先
act
元素是否是绑定到外部
for
表达式的
$data
变量的元素。

在您的代码中,当您对元素act进行迭代时,它们将被视为不同的片段。因此,您应该首先合并所有act第二个问题是当你们在act元素上迭代时,它总是从一开始计算数据元素的数量

let $act :=(
<act time="1231">
    <data value="2">hello</data>
    <data value="2">hello</data>
    <data value="2">hello</data>
    <data value="2">hello</data>
    <data value="2">hello</data>
    <data value="2">hello</data>
</act>,
<act time="51292">
    <state>
        <data value="2">world</data>
        <data value="2">world</data>
        <data value="2">world</data>
        <data value="2">world</data>
        <data value="2">world</data>
    </state>
</act>,
<act time="41212">
    <state1>
        <state2>
            <data value="2">3</data>
            <data value="2">3</data>
            <data value="2">3</data>
            <data value="2">3</data>
            <data value="2">3</data>
        </state2>
    </state1>
</act>
)

let $markAct:=<mainact>{for $data in $act
    return 
    $data
    }</mainact>
let $data:=  

for $in in $markAct//act

return <act time="{$in/@time}">{
    for $data in $in//data
    return <data value="{$data}">{count($data/preceding::data)+1}</data>
    }</act>


return $data
让$act:=(
你好
你好
你好
你好
你好
你好
,
世界
世界
世界
世界
世界
,
3.
3.
3.
3.
3.
)
让$markAct:={for$act中的$data
返回
$data
}
let$data:=
在$markAct//act中输入$in
返回{
对于$in//data中的$data
返回{count($data/preference::data)+1}
}
返回$data

在您的代码中,当您在元素act上迭代时,它们会被视为不同的片段。因此,您应该首先将所有act合并到一个标记中,因为我使用的是元素mainact。第二个问题是,当您在act元素上迭代时,它总是开始计算数据元素的表1

let $act :=(
<act time="1231">
    <data value="2">hello</data>
    <data value="2">hello</data>
    <data value="2">hello</data>
    <data value="2">hello</data>
    <data value="2">hello</data>
    <data value="2">hello</data>
</act>,
<act time="51292">
    <state>
        <data value="2">world</data>
        <data value="2">world</data>
        <data value="2">world</data>
        <data value="2">world</data>
        <data value="2">world</data>
    </state>
</act>,
<act time="41212">
    <state1>
        <state2>
            <data value="2">3</data>
            <data value="2">3</data>
            <data value="2">3</data>
            <data value="2">3</data>
            <data value="2">3</data>
        </state2>
    </state1>
</act>
)

let $markAct:=<mainact>{for $data in $act
    return 
    $data
    }</mainact>
let $data:=  

for $in in $markAct//act

return <act time="{$in/@time}">{
    for $data in $in//data
    return <data value="{$data}">{count($data/preceding::data)+1}</data>
    }</act>


return $data
让$act:=(
你好
你好
你好
你好
你好
你好
,
世界
世界
世界
世界
世界
,
3.
3.
3.
3.
3.
)
让$markAct:={for$act中的$data
返回
$data
}
let$data:=
在$markAct//act中输入$in
返回{
对于$in//data中的$data
返回{count($data/preference::data)+1}
}
返回$data
<act time="1231">
   <data value="hello">1</data>
   <data value="hello">2</data>
</act>,
<act time="51292">
   <data value="world">3</data>
   <data value="world">4</data>
</act>,
<act time="41212">
   <data value="3">5</data>
   <data value="3">6</data>
</act>
let $act :=(
<act time="1231">
    <data value="2">hello</data>
    <data value="2">hello</data>
    <data value="2">hello</data>
    <data value="2">hello</data>
    <data value="2">hello</data>
    <data value="2">hello</data>
</act>,
<act time="51292">
    <state>
        <data value="2">world</data>
        <data value="2">world</data>
        <data value="2">world</data>
        <data value="2">world</data>
        <data value="2">world</data>
    </state>
</act>,
<act time="41212">
    <state1>
        <state2>
            <data value="2">3</data>
            <data value="2">3</data>
            <data value="2">3</data>
            <data value="2">3</data>
            <data value="2">3</data>
        </state2>
    </state1>
</act>
)

let $markAct:=<mainact>{for $data in $act
    return 
    $data
    }</mainact>
let $data:=  

for $in in $markAct//act

return <act time="{$in/@time}">{
    for $data in $in//data
    return <data value="{$data}">{count($data/preceding::data)+1}</data>
    }</act>


return $data