我有一个XML文件,需要它有一些特定的标签,否则我将无法处理该文件。我如何确定这些标签是否存在,我尝试使用XSD验证,但是文件格式不断变化,并且它们不断发送不需要处理文件的其他标签,但是拥有这些附加标签不会损害我的流程。
有没有一种方法来编写XSD,使其只查找几个标签而忽略其他标签?
答案 0 :(得分:1)
您可以创建一个xsd,其中包含您需要的所有元素。默认情况下,元素具有minOccurs=1
,这意味着它是必需的。然后,为了忽略其余所有内容,您需要添加<xs:any processContents="lax" macOccurs="unbounded"/>
,它基本上表明xml可能包含许多不需要验证的附加元素。
答案 1 :(得分:0)
考虑放弃XSD,而是针对XML编写XPath检查,以测试XSD的已知不变属性。当您拥有已知的,相对静态的语法时,XSD更好。临时XPath断言或Schematron对于无法保存确定性语法的XML会更好。