架构新手 - 现在停留了一个多星期

时间:2011-08-12 23:48:05

标签: xml xsd schema

我已经编写了一个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>

如果你能提供帮助,我将非常感激:)

1 个答案:

答案 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>