1

我在为 XML 文档生成 XML Schema 时遇到了一些问题。XML 文档应如下所示:

<HEADER>
    <ID>64639</ID>
    ....
    <INCIDENT>
        <HEADER>64639</HEADER>
    </INCIDENT>
    <INCIDENT>
        <HEADER>64639</HEADER>
    </INCIDENT>
    ....
</HEADER>

到目前为止,我实现了以下结构:

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
        elementFormDefault="qualified">

<xsd:element name="HEADER">
    <xsd:complexType>
        <xsd:all>
            <xsd:element minOccurs="1" name="ID" nillable="false" type="xsd:integer"/>
        </xsd:all>
    </xsd:complexType>
    <xsd:key name="SYS_C0032500">
        <xsd:selector xpath="."/>
        <xsd:field xpath="ID"/>
    </xsd:key>
    <xsd:keyref name="SYS_C0032500_HEADER.ID_INCIDENT.HEADER_" refer="SYS_C0032500">
        <xsd:selector xpath="INCIDENT"/>
        <xsd:field xpath="HEADER"/>
    </xsd:keyref>
</xsd:element>

<xsd:element name="INCIDENT">
    <xsd:complexType>
        <xsd:all>
            <xsd:element minOccurs="1" name="HEADER" nillable="false" type="xsd:integer"/>
        </xsd:all>
    </xsd:complexType>
    <xsd:key name="IDK">
        <xsd:selector xpath="."/>
        <xsd:field xpath="HEADER"/>
    </xsd:key>
</xsd:element>

</xsd:schema>

此任务的标准使用 和 元素来模拟数据库约束。目前我收到一条错误消息,上面写着:

引擎名称:Xerces 严重性:错误描述:cvc-complex-type.2.4.d:发现以元素“INCIDENT”开头的无效内容。此时不需要子元素。开始位置:3:6 结束位置:3:14 URL:http ://www.w3.org/TR/xmlschema-1/#cvc-complex-type

我的另一个问题来自更多的事件部分。当没有 maxOccurs 属性时,如何添加更多 INCIDENT 元素?

感谢您的每一个帮助!

问候,乔

4

1 回答 1

2

在您的示例实例文档中,HEADER 的内容模型似乎是“一个 ID 后跟一个或多个事件”。在 XSD 中是:

<xsd:element name="HEADER">
    <xsd:complexType>
        <xsd:sequence>
            <xsd:element name="ID" nillable="false" type="xsd:integer"/>
            <xsd:element name="INCIDENT" minOccurs="1" maxOccurs="unbounded" type="..."/>
        </xsd:all>
    </xsd:complexType>
    ...
于 2012-09-18T20:41:34.427 回答