【问题标题】:XSD: elements with same name in different files used togetherXSD:不同文件中同名的元素一起使用
【发布时间】:2012-10-24 00:23:50
【问题描述】:

我有一组 XSD 文件,每个文件的结构如下:

message_i.xsd

<xs:complexType name="message_i">
    <!-- definition of message -->
</xs:complexType>

<xs:element name="document" type="message_i"></xs:element>

因此,每个 xsd 文件都包含一个名为“文档”的元素,该元素具有该文件定义的类型。接收特定“文档”类型消息的网络服务正在使用 xsd 文件。

问题是我需要有一堆元素“文档”,但类型不同。

现在我想将多条消息合二为一。我创建了以下代码:

<!-- some data -->
<xs:element name="document1" type="message1">
<xs:element name="document4" type="message4">    
<xs:element name="document5" type="message5">

但我收到错误消息,指出此文档包含目标命名空间中已存在的元素。而那个名字就是“文档”。

如何创建包含不同消息的元素?

【问题讨论】:

    标签: xml xsd


    【解决方案1】:

    如果不在每个 xsd 中定义每个复杂类型,则看不到这一点,但是

    为每个xsd添加一个命名空间

    例如

    <xs:schema xmlns:DOC1="http://www.mySite.Com/DOC1" />
    

    那么您的复杂类型将是 DOC1:message_i

    所以你可以拥有,

    <xs:element name="document1" type="DOC1:message_i">
    <xs:element name="document4" type="DOC2:message_i">
    <xs:element name="document5" type="DOC3:message_i"> 
    

    【讨论】:

    • 我必须将 targetNamespace 添加到每个 XSD 吗?像你说的那样做后,我收到一条错误消息,指出禁止链接到 DOC1:message_1
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-11
    • 2013-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-21
    相关资源
    最近更新 更多