Как написать схему xsd, чтобы пропустить тег верхнего уровня в определении xsd?
Я хочу создать схему XSD, которая подходит для обоих типов файлов XML:
<caption>
<tt>blah</tt>
</caption>
а также
<tt>blah</tt>
И я попробовал minOccurs
для подписи, но так как это корень, он не может быть minOccurs = 0
раз. Итак, как этого добиться?
1 ответ
Решение
Просто совет
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
<!-- First possible root element -->
<xs:element name="tt" type="xs:string"/>
<!-- Second possible root element-->
<xs:element name="caption">
<xs:complexType>
<xs:sequence>
<!-- just reference to first defined element - when something change there, it won't be necessary to change it everywhere -->
<xs:element ref="tt" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
Очевидно, есть и другие способы достижения того же эффекта.