Схема XML, один фиксированный атрибут среди нескольких неизвестных - PullRequest
1 голос
/ 22 февраля 2011

У меня есть схема, которую я использую для проверки 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"/>

1 Ответ

1 голос
/ 04 марта 2011

Это в основном то, для чего 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-схеме 1.1 имеются более богатые опции, если ваш валидатор поддерживает ее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...