0

我已经尝试了几种方法来为这个问题创建一个模式,但我没有取得任何成功。我不确定这是否可能。

基本上,假设我有一个根节点<root>,它可以有子节点<A><B><C>

对于输出 xml 的程序的每次迭代,创建 A、B 和 C 节点并将其作为子节点附加到根。但是,每次迭代并不总是使用每个 A、B 和 C……在这种情况下,它不输出任何节点。所以我得到这样的例子:

<A>sfs</A> <!-- first iteration used A, B, and C -->
<B>sfs</B>
<C>ss</C>
<A>fff</A> <!-- second iteration used A, and C, not B -->
<C>ss</C>
<B>fff</B> <!-- third iteration used only B -->

我没有编写以这种方式输出它的程序,并且对格式没有真正的权力。

例如,我所知道的是,永远不会有超过 10 个 A、2 个 C、5 个 B。但是,不能保证订单。

所以我想要的只是一个 XSD 来确定根内只有 A、B 和 C 节点,并且不超过 10 个 A、2 个 C 和 5 个 B。

我可以通过使用 xs:choice 和 maxOccurs unbounded 来实现第一部分。它只保证 A、B 和 C 节点,但我似乎无法找到一种方法来强制执行它们的数量。

这个问题有一些聪明的解决方法吗?

4

1 回答 1

1

要使用 XSD 验证这种结构,您无能为力。XSD 非常严格。

您可能会更好地使用 xml,然后对代码中的反序列化实例进行一些检查。

于 2012-06-21T13:51:08.740 回答