我的xml文件是
<?xml version="1.0" encoding="UTF-8"?>
<edge xmlns="http://www.example.org/stext">
<ellipse rx="189" ry="22" cx="279" cy="531"
style="fill:#FFFDFD;stroke:#000000;" id="Ellipse_23" isLocked="false" />
<ellipse rx="130" ry="38" cx="580" cy="393"
style="fill:#FFFDFD;stroke:#000000;" id="Ellipse_19" isLocked="false" />
<ellipse rx="172" ry="92" cx="539" cy="245"
style="fill:#BD7272;stroke:#D9B5B5;" id="Ellipse_20" isLocked="false" />
<circle r="51" cx="426" cy="284" style="fill:#BD7272;stroke:#D9B5B5;"
id="Circle_16" isLocked="false" />
<circle r="45" cx="428" cy="397" style="fill:#FFFDFD;stroke:#302E2E;"
id="Circle_17" isLocked="false" />
</edge>
这是我的XSD架构
<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.org/stext"
xmlns:tns="http://www.example.org/stext" elementFormDefault="qualified">
<element name="edge">
<complexType>
<sequence>
<element name="circle" maxOccurs="unbounded">
<complexType>
<attribute name="r" type="int" />
<attribute name="cx" type="int" />
<attribute name="cy" type="int" />
<attribute name="style" type="string" />
<attribute name="id" type="string" />
<attribute name="isLocked" type="boolean" />
</complexType>
</element>
<element name="ellipse" maxOccurs="unbounded">
<complexType>
<attribute name="rx" type="int" />
<attribute name="ry" type="int" />
<attribute name="cx" type="int" />
<attribute name="cy" type="int" />
<attribute name="style" type="string" />
<attribute name="id" type="string" />
<attribute name="isLocked" type="boolean" />
</complexType>
</element>
</sequence>
</complexType>
</element>
</schema>
我遇到了这种异常
例外:cvc-complex-type.2.4.a:从元素&#39; ellipse&#39;开始发现无效内容。其中一个&#39; {&#34; http://www.example.org/stext&#34;:circle}&#39;是预期的。
答案 0 :(得分:1)
发生这种情况,因为<sequence>
强制执行特定订单。
我认为可以解决您的问题的方法是使用额外的xsd:choice元素。
如果你像
那样写<sequence>
<choice maxOccurs="unbounded">
<element name="circle">
<complexType>
<attribute name="r" type="int" />
<attribute name="cx" type="int" />
<attribute name="cy" type="int" />
<attribute name="style" type="string" />
<attribute name="id" type="string" />
<attribute name="isLocked" type="boolean" />
</complexType>
</element>
<element name="ellipse">
<complexType>
<attribute name="rx" type="int" />
<attribute name="ry" type="int" />
<attribute name="cx" type="int" />
<attribute name="cy" type="int" />
<attribute name="style" type="string" />
<attribute name="id" type="string" />
<attribute name="isLocked" type="boolean" />
</complexType>
</element>
</choice>
</sequence>
允许以任何顺序排列多个圆形或椭圆形元素。