XQuery-无界结构中元素值的值之和
我试图从下面的结构中获得特定字段的值之和,但它似乎不起作用,因为我得到的错误为预期的零或一个值,但得到了两个或更多XQuery-无界结构中元素值的值之和,xquery,Xquery,我试图从下面的结构中获得特定字段的值之和,但它似乎不起作用,因为我得到的错误为预期的零或一个值,但得到了两个或更多 <v4:CalculateResponse xmlns:v4="http://services.xx.net/mm/va"> <v4:CalculateResponseSizeType> <v4:CalculateCCs> <v4:Container>
<v4:CalculateResponse xmlns:v4="http://services.xx.net/mm/va">
<v4:CalculateResponseSizeType>
<v4:CalculateCCs>
<v4:Container>
<v4:GrossBookedWeight>31.6</v4:GrossBookedWeight>
<v4:NetPredictedWeight>50</v4:NetPredictedWeight>
<v4:GrossPredictedWeight>53.6</v4:GrossPredictedWeight>
<v4:TypeOfWeightUsed>P</v4:TypeOfWeightUsed>
</v4:Container>
<v4:Container>
<v4:GrossBookedWeight>31.6</v4:GrossBookedWeight>
<v4:NetPredictedWeight>50</v4:NetPredictedWeight>
<v4:GrossPredictedWeight>53.6</v4:GrossPredictedWeight>
<v4:TypeOfWeightUsed>B</v4:TypeOfWeightUsed>
</v4:Container>
<v4:Container>
<v4:GrossBookedWeight>31.6</v4:GrossBookedWeight>
<v4:NetPredictedWeight>50</v4:NetPredictedWeight>
<v4:GrossPredictedWeight>53.6</v4:GrossPredictedWeight>
<v4:TypeOfWeightUsed>B</v4:TypeOfWeightUsed>
</v4:Container>
<v4:Container>
<v4:GrossBookedWeight>31.6</v4:GrossBookedWeight>
<v4:NetPredictedWeight>50</v4:NetPredictedWeight>
<v4:GrossPredictedWeight>53.6</v4:GrossPredictedWeight>
<v4:TypeOfWeightUsed>P</v4:TypeOfWeightUsed>
</v4:Container>
</v4:CalculateCCs>
</v4:CalculateResponseSizeType>
<v4:Status>P</v4:Status>
<v4:StatusCode>1000</v4:StatusCode>
</v4:CalculateResponse>
31.6
50
53.6
P
31.6
50
53.6
B
31.6
50
53.6
B
31.6
50
53.6
P
P
1000
我试着用下面的函数求这些值的和,但看起来好像只求了一个值
<Weight>
{
sum(
data($calculateResponse1/*:CalculateResponseSizeType/*:CalculateCCs/*:Container[data(*:TypeOfWeightUsed) = "B"]/*:GrossBookedWeight),
data($calculateResponse1/*:CalculateResponseSizeType/*:CalculateCCs/*:Container[data(*:TypeOfWeightUsed) = "P"]/*:GrossPredictedWeight)
)
}
</Weight>
{
总数(
数据($calculateResponse1/*:CalculateResponseSizeType/*:CalculateECCS/*:容器[数据(*:TypeOfWeightUsed)=“B”]/*:GrossBookWeight),
数据($calculateResponse1/*:CalculateResponseSizeType/*:CalculateECCS/*:容器[数据(*:TypeOfWeightUsed)=“P”]/*:总预计重量)
)
}
这里的计算很简单,假设TypeOfWeightUsed=0,那么我想使用GrossPredictedWeight元素值,或者如果TypeOfWeightUsed=B,那么我想使用GrossBookedWeight
我们可以在一个结构中有多个容器
请说明以上syntex的问题
这里的计算很简单,假设TypeOfWeightUsed=0,那么我想使用GrossPredictedWeight元素值,或者如果TypeOfWeightUsed=B,那么我想使用GrossBookedWeight
您可以在if else
构造的帮助下使用flower表达式来获取执行求和()所需的所有数字。
:
这里的计算很简单,假设TypeOfWeightUsed=0,那么我想使用GrossPredictedWeight元素值,或者如果TypeOfWeightUsed=B,那么我想使用GrossBookedWeight
您可以在if else
构造的帮助下使用flower表达式来获取执行求和()所需的所有数字。
:
当sum()函数有两个参数时,第二个参数提供一个值,当第一个参数为空序列时用作结果。(如果没有静态类型检查,sum()函数无法区分空的double序列和空的duration序列,并且在对duration进行求和时,不希望得到整数零的结果,这是一种笨拙的处理方法)
您使用两个参数调用了函数,但我认为您希望将两个序列都视为要求和的输入。只需添加另一对括号,使其成为单个参数:将sum(x,y)
替换为sum((x,y))
出现错误的原因是,如果提供了第二个参数,则该参数必须是单例值,而不是序列。当sum()函数有两个参数时,当第一个参数为空序列时,第二个参数提供一个值作为结果。(如果没有静态类型检查,sum()函数无法区分空的double序列和空的duration序列,并且在对duration进行求和时,不希望得到整数零的结果,这是一种笨拙的处理方法)
您使用两个参数调用了函数,但我认为您希望将两个序列都视为要求和的输入。只需添加另一对括号,使其成为单个参数:将sum(x,y)
替换为sum((x,y))
出现错误的原因是,如果提供了第二个参数,则该参数必须是单例值,而不是序列。是否可以粘贴得到的确切错误?另外,了解您使用的是什么XQuery实现可能会有所帮助。您可以粘贴得到的确切错误吗?另外,了解您正在使用的XQuery实现可能会有所帮助。
<Weight>
{
sum(
for $c in $calculateResponse1/*:CalculateResponseSizeType/*:CalculateCCs/*:Container
return
if($c/*:TypeOfWeightUsed = "B") then $c/*:GrossBookedWeight
else $c/*:GrossPredictedWeight
)
}
</Weight>
<Weight>170.4</Weight>