2014-08-27 94 views
0

我收到一个错误,当我根据XSD验证我的XML时,我找不到原因。针对XSD的XML验证失败--minOccurs显然忽略

“错误是一个元素不允许在另一个元素下,因为其他元素在该位置上是预期的。”

误差快照是在http://imgur.com/YRZTVTD

的XML和XSD分别处于http://dpaste.com/2933QH8http://dpaste.com/16QAQ6B

有趣的是,另一个XSD工作正常。两种模式没有太大区别。这是XML验证正确的架构。 http://dpaste.com/233S87T

它就好像minOccurs指令被忽略,但我无法弄清楚为什么。

欣赏一些指导。

+0

+1 to MCVE,在相关部件中找到更小的XSD中的错误会更容易。 – sergioFC 2014-08-27 21:32:29

回答

1

由于错误说DistroSeqNumber是意外的。这是因为DistroSeqNumber必须在OriginalPickticketQty元件后总是出现(它有的minOccurs = 1)。因此,解析器期望元素或其中一个可选元素,但它不会期望DistroSeqNumber元素仍然存在。

注:(也许你已经知道了。)您OriginalPickticketQty有一个属性默认= 0,必须记住,这意味着如果一个OriginalPickticketQty元素(<OriginalPickticketQty></OriginalPickticketQty>)提供了没有价值的,那么值0将自动分配,但这并不意味着如果该元素没有出现在XML中,它会自动添加一个0值。

+0

谢谢SergioFC。这有很大帮助。 – Guddu 2014-08-28 04:18:19

+0

不客气。 PS:我注意到在我的答案中有一对空括号,但如果你点击我答案的编辑按钮,你会发现括号内的内容是* *(a * OriginalPickticketQty *没有提供任何值的元素)。 – sergioFC 2014-08-28 06:03:15

+0

感谢您的更正! – sergioFC 2014-08-28 14:47:05