1
输入示例XML文件和预期输出位于底部,需要根据子元素的数量进行分组。根据数字对子元素和组进行计数的XQuery(XPath)
<DashboardXML>
<Column>
<ColumnOrder>1</ColumnOrder>
<ColLabel><![CDATA[test1]]></ColLabel>
</Column>
<Column>
<ColumnOrder>2</ColumnOrder>
<ColLabel><![CDATA[t1est]]></ColLabel>
</Column>
<Column>
<ColumnOrder>3</ColumnOrder>
<ColLabel><![CDATA[terst]]></ColLabel>
</Column>
</DashboardXML>
<DashboardXML>
<Column>
<ColumnOrder>1</ColumnOrder>
<ColLabel><![CDATA[test1]]></ColLabel>
</Column>
<Column>
<ColumnOrder>2</ColumnOrder>
<ColLabel><![CDATA[t1est]]></ColLabel>
</Column>
<Column>
<ColumnOrder>3</ColumnOrder>
<ColLabel><![CDATA[terst]]></ColLabel>
</Column>
</DashboardXML>
<DashboardXML>
<Column>
<ColumnOrder>1</ColumnOrder>
<ColLabel><![CDATA[test1]]></ColLabel>
</Column>
<Column>
<ColumnOrder>2</ColumnOrder>
<ColLabel><![CDATA[t1est]]></ColLabel>
</Column>
</DashboardXML>
<DashboardXML>
<Column>
<ColumnOrder>1</ColumnOrder>
<ColLabel><![CDATA[test1]]></ColLabel>
</Column>
<Column>
<ColumnOrder>2</ColumnOrder>
<ColLabel><![CDATA[t1est]]></ColLabel>
</Column>
<Column>
<ColumnOrder>1</ColumnOrder>
<ColLabel><![CDATA[test1]]></ColLabel>
</Column>
<Column>
<ColumnOrder>2</ColumnOrder>
<ColLabel><![CDATA[t1est]]></ColLabel>
</Column>
</DashboardXML>
<DashboardXML>
<Column>
<ColumnOrder>1</ColumnOrder>
<ColLabel><![CDATA[test1]]></ColLabel>
</Column>
<Column>
<ColumnOrder>2</ColumnOrder>
<ColLabel><![CDATA[t1est]]></ColLabel>
</Column>
</DashboardXML>
以上是示例XML的输入和下面是XQuery的:
for $b in /DashboardXML where count($b/Column) > 0 order by count($b/Column) return <li>{count($b/Column)} </li>
的查询产生下面的输出(样本):
<li>3</li>
<li>3</li>
<li>2</li>
<li>4</li>
<li>2</li>
现在的问题是如何组输出如下:
2 = 2 (counts)
3 = 2 (counts)
4 = 1 (counts)
请将代码和输入作为[SSCCE](http://sscce.org),所以我们可以重现它。您的XML无效(缺少根元素)并且不符合预期的输出。将原始文档发布到某个地方,或将预期输出与所提供的输入相匹配。您还应该告诉您使用的XQuery的版本和实现,因为XQuery 3.0知道XQuery 1不知道的“group by”子句。 –
我有更新,如您所建议的 - 谢谢 – user3130446
问题现在看起来不错。你有一个XQuery 3.0兼容的查询处理器,所以我解决了你的问题?然后,您可以将其标记为已回答(问题左侧的复选标记)。 –