Схема новичка - застрял на неделю больше - PullRequest
0 голосов
/ 13 августа 2011

Я написал документ XML, который подается в XSLT, а затем в XSLFO, все работает отлично и выдает прекрасные отформатированные PDF-файлы. Написанная мною схема вызывает ошибку, которая является проблемой, поскольку структура является частью проекта.

Пример XML-документа:

<sect>
    <summ>
        <p>
        Here's some text.
        </p>
        <img src="www.someaddress.com"/>
        <p>
        Here's more text.
        </p>
    </summ>
<sect>

Соответствующие схемы (для экономии места я удалил некоторые элементы из каждого из xs: choice's):

<xs:element name="img">
    <xs:complexType>
        <xs:attribute name="src" type="xs:string" use="required"/>
    </xs:complexType>
</xs:element>

<xs:element name="summ">
    <xs:complexType>
        <xs:choice>
            <xs:element maxOccurs="unbounded" ref="p"/>
            <xs:choice minOccurs="0" maxOccurs="unbounded">
                <xs:element ref="img"/>
            </xs:choice>
         </xs:choice>
         <xs:attribute name="title"/>
    </xs:complexType>
</xs:element>

<xs:element name="sect">
    <xs:complexType mixed="true">           
        <xs:choice maxOccurs="unbounded">
            <xs:element ref="summ"/>
        </xs:choice>
    </xs:complexType>
</xs:element>

<xs:element name="p">
    <xs:complexType mixed="true">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element ref="img"/>
        </xs:choice>
    </xs:complexType>
</xs:element>

Я хочу иметь возможность отображаться как внутри, так и снаружи "p", в тот момент, когда я проверяю это по схеме, выдается ошибка "cvc-complex-type.2.4.a: недопустимое содержимое было найдено, начиная с элемента 'img'. Ожидается один из '{p}'. "

Так что в идеале я бы хотел, чтобы следующее было действительным:

<sect>
    <summ>
        <p>
        Here's some text.
        </p>
        <img src="www.someaddress.com"/>
        <p>
        <img src="www.someotheraddress.com"/>
        </p>
    </summ>
<sect>

Если вы можете помочь, я был бы очень признателен:)

1 Ответ

0 голосов
/ 16 августа 2011
<xs:element name="summ">
<xs:complexType>
    <xs:choice minOccurs="1" maxOccurs="unbounded">
        <xs:element minOccurs="1" ref="p"/>
        <xs:element ref="img"/>
    </xs:choice>
    <xs:attribute name="title"/>
</xs:complexType>

...