我有一个文档,在一个根元素下有一堆元素,它有一些我关心的元素,并且想要验证;但这些元素可能出现在文档的任何地方。
还有其他一些我不想验证的元素;我不在乎他们是否存在或者是什么。
我尝试了一个显而易见的事情,一个带有我关心的元素的XSD在'all'元素中,然后是'any'元素,但这是不允许的。
我考虑过:
必须有办法做到这一点,对吧?
如果我们需要一个例子:
<book>
<title/>
<author/>
<editor/>
<pubdate/>
</book>
对于该示例,我想检查标题和编辑器是否存在,并忽略author和pubdate。注意,元素的顺序我不一样。
答案 0 :(得分:2)
我最后使用XSLT转换消除了我不感兴趣的字段。
然后,我的XMLSchema不需要在...元素中拥有该元素,只需要我感兴趣的元素。
XSL转换似乎没有为流程添加任何可察觉的时间。如果我将来看到任何性能问题,我可能会将interest-elements-filter合并到我正在调用的API中。
努力享受。
答案 1 :(得分:1)
您必须创建一个模式,以验证您认为应该有效的所有实例文档。例如,您可能需要使用<choice>
元素来指示必须存在多个元素之一。您可能希望在架构中包含author和pubdate,但表明您不关心它们的内容或属性,并且它们应该是可选的。
答案 2 :(得分:0)
根据您的要求(“我关心的一些要素,并且想要验证;但这些要素可能出现在文档的任何位置”){} {}}可能比XSD更好。