我想返回的每时间表和也警告数L1和L0项目的数量,也按计划。为什么XQuery表达式返回错误的元素数?
它实际上是一个“数如果”的情况。
我尝试下面的XQuery,它计数L1,L0和警告罚款,但不指望所有的警告,而不是只与value = "yes"
的人。
xquery version "3.0";
let $nl := " "
let $quote := """
let $pipe := "|"
let $nodecount := 0
for $profiles in doc("maik test.xml")/PROFILE
for $schedule in $profiles/SCHEDULE
let $schedulename := $schedule/@name
group by $schedulename
return ($nl,
$schedulename, $pipe, "L0 count:", count($schedule/L0),
$pipe, "L0 Warnings:", count($schedule/L0/ATTRIBUTE[@NAME = "Warnings"]/VALUE/string() = "Yes"),
$pipe, "L1 count:", count($schedule/L0/L1),
$pipe, "L1 Warnings:", count($schedule/L0/L1/ATTRIBUTE[@NAME = "Warnings"]/VALUE/string() = "Yes"))
示例XML:
<?xml version="1.0" encoding="UTF-8"?>
<PROFILE name="profile1">
<SCHEDULE name="schedule1">
<L0>
<ATTRIBUTE NAME="Warnings">
<VALUE>No</VALUE>
</ATTRIBUTE>
<L1>
<ATTRIBUTE NAME="Warnings">
<VALUE>No</VALUE>
</ATTRIBUTE>
</L1>
<L1>
<ATTRIBUTE NAME="Warnings">
<VALUE>No</VALUE>
</ATTRIBUTE>
</L1>
<L1>
<ATTRIBUTE NAME="Warnings">
<VALUE>Yes</VALUE>
</ATTRIBUTE>
</L1>
<L1></L1>
</L0>
<L0>
<ATTRIBUTE NAME="Warnings">
<VALUE>No</VALUE>
</ATTRIBUTE>
<L1></L1>
</L0>
</SCHEDULE>
<SCHEDULE name="schedule2">
<L0>
<L1></L1>
<L1></L1>
<L1></L1>
<L1></L1>
</L0>
<L0>
<L1></L1>
</L0>
<L0>
<L1></L1>
<L1></L1>
<L1></L1>
</L0>
</SCHEDULE>
</PROFILE>
+1对于包含示例输入的一个好问题,您尝试过的d明确的问题陈述。对于一个完美的问题,还要添加当前(错误)和期望的输出 - 但问题已经完全好了。 –
其实我对这个问题有问题。当你的日程安排名称是唯一的时,你为什么按计划名称分组?你是否试图编写一个查询来处理日程安排名称不唯一的输入?如果你是这样的话,那么在这种情况下你不期望输出什么。 –
@MichaelKay,没有分组我的计数功能将无法正常工作?我想知道每个计划的“警告值=是”的节点数量。 – Maik