Xsd XML模式,几个未知属性中的一个固定属性

Xsd XML模式,几个未知属性中的一个固定属性,xsd,Xsd,我有一个模式,用于验证对我的应用程序的HTTP请求。它对查询字符串和帖子内容非常有效,但我遇到了标题参数的障碍。理想情况下,我希望检查HTTP_REQUEST_方法是否为“GET”或“POST”等,但除此之外,我不关心其他参数的值 因此,我的XML可能看起来像: <REQUEST> <HEADERS> <User-Agent>bla bla</User-Agent> <Cookie>bla bla</Cookie>

我有一个模式,用于验证对我的应用程序的HTTP请求。它对查询字符串和帖子内容非常有效,但我遇到了标题参数的障碍。理想情况下,我希望检查HTTP_REQUEST_方法是否为“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"/>

... “GET”的固定值用于。。。

这就是
lax
的基本功能。它将验证它知道的元素并忽略其他元素。您只需在内容模型中使用
maxOccurs=unbounded
放置一个
any
,并将诸如
request\u 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模式1.1中有更丰富的选项,以防您的验证器支持它。

这正是
lax
的基本用途。它将验证它知道的元素并忽略其他元素。您只需在内容模型中使用
maxOccurs=unbounded
放置一个
any
,并将诸如
request\u 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>

XMLSchema1.1中有更丰富的选项,以防验证器支持它