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

问题描述 投票:8回答:5

对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不允许这样做。上面提到的示例只是一个示例。实用的XML带有XML标签的复杂层次结构。

请让我知道您是否可以破解它。

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

对XSD功能的又一个挑战,我一直在由客户端发送XML文件,这些文件将具有0个或多个未定义或[调用]意外标签(可能出现在层次结构中)。他们是...

xml xsd xsd-validation
5个回答
4
投票

如果您尚未完成此操作,则可以尝试以下操作:


3
投票

结论:


2
投票

您可以利用XML 1.1中称为“开放内容”的新功能。简而言之,它允许您指定可以将其他“未知”元素添加到复杂类型的各个位置,以及解析器在碰到任何那些元素时应采取的措施。


1
投票

也许可以使用名称空间:


1
投票

我遇到了同样的问题。

© www.soinside.com 2019 - 2024. All rights reserved.