Создание действительного XSD, открытого с использованием элементов и

Мне нужно указать XSD для проверки документов XML. XSD будет использоваться для создания привязок Java JAXB. Моя проблема заключается в указании необязательных элементов, названия которых я не знаю и которые меня вообще не интересуют в синтаксическом анализе.

Структура XML-документов выглядит так:

<TRADE>
  <TIME>12:12</TIME>
  <MJELLO>12345</MJELLO>
  <OPTIONAL>12:12</OPTIONAL>
  <DATE>25-10-2011</DATE>
  <HELLO>hello should be ignored</HELLO>
</TRADE>

Важно то, что:

  • Я не могу предположить какой-либо порядок, и следующий экземпляр XML-документа будет иметь теги в другом порядке
  • Меня интересует только синтаксический анализ некоторых тегов, некоторые из них являются обязательными, а некоторые - необязательными
  • XML-документы могут быть расширены новыми элементами, которые меня не интересуют.

Структура моего XSD похожа на ( недопустимый xsd ):

<?xml version="1.0" encoding="ISO-8859-1"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

  <!-- *********************************************** -->
  <!-- Trade element definitions for the XML Documents -->
  <!-- *********************************************** -->

  <xs:complexType name="Trade">
    <!-- Using the all construction ensures that the order does not matter -->
    <xs:all>
      <xs:element name="DATE" type="xs:string" minOccurs="1" maxOccurs="1" />
      <xs:element name="TIME" type="xs:string" minOccurs="1" maxOccurs="1" />
      <xs:element name="OPTIONAL" type="xs:string" minOccurs="0" maxOccurs="1" />
      <xs:any minOccurs="0"/>
    </xs:all>
  </xs:complexType>

  <!-- TRADE is the mandatory top-level tag -->
  <xs:element name="TRADE" type="Trade"/>

</xs:schema>

Итак, в этом примере: ДАТА и ВРЕМЯ являются обязательными (они должны быть в XML ровно один раз), OPTIONAL может присутствовать один раз, и тогда я хотел бы указать, что все другие теги разрешены. Порядок не имеет значения.

Как указать для этого действительный XSD?

7
задан Mat 4 December 2011 в 13:26
поделиться