我正在尝试编写一个 xsd 来验证我的程序的输入文件。
也许是我,但对于这种情况,我觉得很奇怪,我需要定义所有可能出现在 xml 中的元素,因为我只需要包含数据的一个子集,并且 xml 将来可能会扩展。鉴于这是我的 xml:
<?xml version="1.0" encoding="utf-8"?>
<Setup>
<Foo desc="i don't need you">This is some random Element</Foo>
<Bar>This is what i need to process</Bar>
<Bar>And it might appear more than once</Bar>
<Foobar>Some other random element. There might be more</Foobar>
</Setup>
只要存在<Setup>-> <Bar> 是否存在有效的 xsd,无论 > 下的任何位置是否存在随机其他元素<Setup?
我认为基本结构可能类似于
<?xml version="1.0" encoding="utf-8"?>
<xs:schema>
<xs:element name="Setup">
<xs:complexType>
<xs:someting>
<xs:element name="bar" type="xs:string" minOccurence="1" maxOccurence="unbounded"/>
<xsd:any processContents="skip" minOccurs="0" maxOccurs="unbounded"/>
</xs:something>
</xs:complexType>
</xs:element>
</xs:schema>
但是<any> 似乎只允许附加元素,我还没有找到一个解决方案<choice>,<sequence>或者<all>它们的组合来解决这个问题。有什么诀窍吗?
PS:遗憾的是 XSD1.1 不是一个选项