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