xml – 如何忽略未知标签的验证?

前端之家收集整理的这篇文章主要介绍了xml – 如何忽略未知标签的验证?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
对XSD功能的另一个挑战是,我一直在发送我的客户端的XML文件,这些文件将包含0个或更多未定义或[调用]意外标记(可能出现在层次结构中).那么它们对我来说是多余的标签..所以我必须忽略它们的存在,但是随之而来的还有一些需要验证的标签.

这是一个示例XML:

<root>
  <undefined_1>one</undefined_1>
  <undefined_2>two</undefined_2>
  <node>to_be_validated</node>
  <undefined_3>two</undefined_3>
  <undefined_4>two</undefined_4>
</root>

和我试过的XSD:

<xs:element name="root" type="root"></xs:element>
  <xs:complexType name="root">
    <xs:sequence>
      <xs:any maxOccurs="2" minOccurs="0"/>
      <xs:element name="node" type="xs:string"/>
      <xs:any maxOccurs="2" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType

由于某些原因,XSD不允许这样做.@H_403_10@上面提到的例子只是一个例子.实用的XML带有XML标签的复杂层次结构.

如果你能得到它,请告诉我.

顺便说一句,替代解决方案是在验证过程之前插入XSL转换.好吧,我正在避免它,因为我需要更改触发验证过程的.Net代码,至少我的公司支持验证过程.

如果您尚未完成此操作,可以尝试以下操作:
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="root" type="root"></xs:element>
  <xs:complexType name="root">
    <xs:sequence>
      <xs:any maxOccurs="2" minOccurs="0" processContents="skip"/>
      <xs:element name="node" type="xs:string"/>
      <xs:any maxOccurs="2" minOccurs="0" processContents="skip"/>
    </xs:sequence>
  </xs:complexType>
</xs:schema>

在Linux下,使用libxml版本20706可以很好地使用xmllint.

原文链接:https://www.f2er.com/xml/292992.html

猜你在找的XML相关文章