Как написать схему 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>

Очевидно, есть и другие способы достижения того же эффекта.

Другие вопросы по тегам