Мне нужно указать 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>
Важно то, что:
Структура моего 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?