首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >重用XSD complexType

重用XSD complexType
EN

Stack Overflow用户
提问于 2013-10-22 01:09:46
回答 1查看 47关注 0票数 1

我有以下XSD:

代码语言:javascript
复制
<element name="OrderElement" type="tns:OrderType"></element>

<complexType name="OrderType">
    <sequence>
        <element name="Name" type="tns:NameType"></element>
        <element name="Address" type="tns:AddressType"></element>
    </sequence>
</complexType>

<complexType name="NameType">
    <sequence>
        <element name="FirstName" minOccurs="1" maxOccurs="1" type="string">
        </element>
        <element name="Surname" minOccurs="1" maxOccurs="1" type="string">
        </element>
    </sequence>
</complexType>

<complexType name="AddressType">
    <sequence>
        <element name="AddressLine1" minOccurs="1" maxOccurs="1"
            type="string">
        </element>
        <element name="AddressLine2" minOccurs="1" maxOccurs="1"
            type="string">
        </element>
        <element name="Country" minOccurs="1" maxOccurs="1"
            type="tns:CountriesDeliveryType">
        </element>
    </sequence>
</complexType>

<complexType name="CountriesDeliveryType">
    <choice minOccurs="1">
        <element name="USA" type="string" maxOccurs="1" minOccurs="0"></element>
        <element name="Brazil" type="string" maxOccurs="1" minOccurs="0"></element>
        <element name="China" type="string" maxOccurs="1" minOccurs="0"></element>
    </choice>
</complexType>

我想要做的是有一个复杂的类型,这样我就可以在整个代码中重用这些国家。我遇到的问题是,在XML中,当我移除国家时,它会验证:

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<tns:OrderElement xmlns:tns="http://www.example.org/NewXMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.example.org/NewXMLSchema NewXMLSchema.xsd ">
  <tns:Name>
    <tns:FirstName>tns:FirstName</tns:FirstName>
    <tns:Surname>tns:Surname</tns:Surname>
  </tns:Name>
  <tns:Address>
    <tns:AddressLine1>tns:AddressLine1</tns:AddressLine1>
    <tns:AddressLine2>tns:AddressLine2</tns:AddressLine2>
    <tns:Country>
      <tns:USA>tns:USA</tns:USA>
    </tns:Country>
  </tns:Address>
</tns:OrderElement>

也就是说,如果我删除了<tns:USA>tns:USA</tns:USA>,它仍然是有效的。

我已经调查这个问题很久了,但还没有找到解决方案。这可能是很简单的事情,但我似乎想不出来。有什么建议吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-10-22 01:19:04

都在你的minOccurs="0"里。因此,不可能同时设置所有国家。修复看起来就像

代码语言:javascript
复制
<complexType name="CountriesDeliveryType">
    <choice minOccurs="1" maxOccurs="3">
        <element name="USA" type="string" maxOccurs="1" minOccurs="1"></element>
        <element name="Brazil" type="string" maxOccurs="1" minOccurs="1"></element>
        <element name="China" type="string" maxOccurs="1" minOccurs="1"></element>
    </choice>
</complexType>

尽管如此,仍然可以有两个<USA>元素。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19507404

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档