Проблема, с которой я столкнулся, заключается в создании правильной схемы XSD для моего XML
У меня есть следующий XML:
<VanToRoute>
<VanId>1111</VanId>
<RouteNo>1459</RouteNo>
<RouteNo>1458</RouteNo>
<RouteNo>2459</RouteNo>
<RouteNo>1THU</RouteNo>
</VanToRoute>
<VanToRoute>
<RouteNo>2458</RouteNo>
<VanId>2222</VanId>
<RouteNo>1457</RouteNo>
<RouteNo>1NEW</RouteNo>
<RouteNo>2NEW</RouteNo>
</VanToRoute>
<VanToRoute>
<RouteNo>1215</RouteNo>
<RouteNo>2457</RouteNo>
<VanId>2222</VanId>
</VanToRoute>
<VanToRoute>
<VanId>4444</VanId>
<RouteNo>2456</RouteNo>
<RouteNo>1100</RouteNo>
<RouteNo>2465</RouteNo>
</VanToRoute>
Таким образом, ключевым моментом является наличие обязательного поля VanId и неограниченного номера RouteNo.
Основная задача - установить обязательные поля с разрешенным размещением элементов XML.
Что я сделал до сих пор:
<xs:element minOccurs="1" maxOccurs="unbounded" name="VanToRoute">
<xs:complexType>
<xs:sequence>
<xs:choice>
<xs:element minOccurs="1" name="VanId" type="xs:unsignedshort" />
<xs:element minOccurs="1" name="RouteNo" type="xs:string" />
</xs:choice>
<xs:choice>
<xs:element minOccurs="1" name="RouteNo" type="xs:string" />
<xs:element minOccurs="1" name="VanId" type="xs:unsignedshort" />
</xs:choice>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" name="RouteNo" type="xs:string" />
</xs:sequence>
</xs:sequence>
</xs:complexType>
</xs:element>
Но это решение неверно по нескольким причинам:
- Допускается дублирование VanId, что неверно
- Это не дает гибкости поставить VanId в конец моего списка.
Мой вопрос - возможно ли вообще каким-то образом подражать логике, которую я хотел бы вставить?