Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当XML文档中的内容子集可以以任何顺序出现时,如何验证它?_Xml_Xsd - Fatal编程技术网

当XML文档中的内容子集可以以任何顺序出现时,如何验证它?

当XML文档中的内容子集可以以任何顺序出现时,如何验证它?,xml,xsd,Xml,Xsd,我有一个文档,在一个根元素下有一堆元素,这个根元素有几个我关心的元素,并且想要验证;但这些元素可能出现在文档中的任何位置 还有其他我不想验证的元素;我不在乎他们在不在 我尝试了一个显而易见的东西,一个XSD,在'all'元素中包含我关心的元素,然后是'any'元素,但这是不允许的 我考虑过: 包括我的模式中的其他元素-yuk 转换文档以消除其他元素—哇,太过分了 一定有办法做到这一点,对吗 如果我们需要一个例子: <book> <title/> <aut

我有一个文档,在一个根元素下有一堆元素,这个根元素有几个我关心的元素,并且想要验证;但这些元素可能出现在文档中的任何位置

还有其他我不想验证的元素;我不在乎他们在不在

我尝试了一个显而易见的东西,一个XSD,在'all'元素中包含我关心的元素,然后是'any'元素,但这是不允许的

我考虑过:

  • 包括我的模式中的其他元素-yuk
  • 转换文档以消除其他元素—哇,太过分了
一定有办法做到这一点,对吗

如果我们需要一个例子:

<book>
  <title/>
  <author/>
  <editor/>
  <pubdate/>
</book>


例如,我想检查title和editor是否存在,并忽略author和pubdate。注意,my元素的顺序不一样。

您必须创建一个模式来验证您认为应该有效的所有实例文档。例如,您可能需要使用
元素来指示必须存在多个元素中的一个。您可能希望在架构中包括author和pubdate,但要表明您不关心它们的内容或属性,并且它们应该是可选的。

根据您的要求(“我关心一些元素,并希望验证它们;但这些元素可能出现在文档中的任何位置”)可能比XSD更好。

我使用XSLT转换来消除我首先不感兴趣的字段

然后,我的XMLSchema不需要有元素,只需要有我感兴趣的元素,在一个。。。元素

XSL转换似乎没有给流程增加任何可感知的时间。如果我在将来看到任何性能问题,我可能会将感兴趣的元素过滤器合并到我正在调用的API中

工作是一种享受