XML Schema,几个未知的固定属性

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了XML Schema,几个未知的固定属性相关的知识,希望对你有一定的参考价值。

我有一个模式,用于验证我的应用程序的HTTP请求。它对查询字符串和帖子内容非常有效,但我已经遇到了标题参数的绊脚石。理想情况下,我想检查HTTP_REQUEST_METHOD是'GET'还是'POST'等,但除此之外,我不关心其他参数的值。

所以,我的XML可能看起来像:

<REQUEST>
 <HEADERS>
  <User-Agent>bla bla</User-Agent>
  <Cookie>bla bla</Cookie>

   ...

  <request_method>GET</request_method>

   ...

  <remote_port>bla bla</remote_port>
 </HEADERS>
 <QUERY_STRING>
   ...
 </QUERY_STRING>
</REQUEST>

是否有任何方法可以为标题参数指定一个我不能预见的通配符,同时坚持认为如果有标记其内容是固定的?

这个有点:

<xsd:any namespace="##any" minOccurs="0" processContents="lax"/>
... fixed value of 'GET' for <request_method> ...
<xsd:any namespace="##any" minOccurs="0" processContents="lax"/>
答案

这基本上是lax的用途。它将验证它所知道的元素并忽略其他元素。你只需要用any在你的内容模型中放一个maxOccurs=unbounded,并定义像request_header这样的已知参数作为全局元素。

唯一的问题是任何其他定义的全局元素如果在那里发生也将被验证。

示例模式:

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="HEADERS">
    <xs:complexType>
      <xs:sequence>
        <xs:any minOccurs="0" maxOccurs="unbounded" processContents="lax"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="request_method">
    <xs:simpleType>
      <xs:restriction base="xs:string">
        <xs:enumeration value="GET"/>
        <xs:enumeration value="POST"/>
      </xs:restriction>
    </xs:simpleType>
  </xs:element>
</xs:schema>

如果您的验证器支持它,XML Schema 1.1中有更丰富的选项。

以上是关于XML Schema,几个未知的固定属性的主要内容,如果未能解决你的问题,请参考以下文章

css常用代码片段 (更新中)

具有未知属性名称的 JSON Schema

(转)Schema

xml

在Tomcat的安装目录下conf目录下的server.xml文件中增加一个xml代码片段,该代码片段中每个属性的含义与用途

在C++中如何用schema校验xml文件