Я написал документ 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>
Если вы можете помочь, я был бы очень признателен:)