我已经编写了一个XML文档,它被输入XSLT然后XSLFO,它一切正常并生成可爱的格式化pdf。我写的模式是抛出错误,这是一个问题,因为结构是项目的结点。
XML doc示例:
<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>
如果你能提供帮助,我将非常感激:)
答案 0 :(得分:0)
<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>