如何创建xml架构以接受同一元素的多个实例?

时间:2016-02-11 17:35:47

标签: xml xsd

我已经看过几个与此相关的问题,但他们的情景几乎总是事先知道元素的名称。例如,编码器知道the "day" element will be one of seven daysthe "language" element will be one of a select group of languages。我的问题是我事先并不知道我的重复元素的子元素是什么,或者它们中有多少元素。

我的最终目标是使用架构将天气报告导入Excel,我已经取得了部分成功。

我正在尝试为以下xml片段编写架构(来自天气预报):

<area>
    <areaDesc>Area Name</areaDesc>
    <polygon>Ordered Pairs</polygon>
</area>
<area>
    <areaDesc>Second Area Name</areaDesc>
    <polygon>Ordered Pairs</polygon>
</area>

(&#34; polygon&#34;元素是一组lat-long坐标,用于创建受报告天气影响的多边形区域。)

报告中至少会有一个区域,但据我所知,没有上限。由于无法知道所有可能的区域名称,也无法知道报告中有多少区域,因此我之前链接的问题与我的方案非常匹配。

到目前为止,我所使用的模式仅使用第一个区域:

<xs:element name="area">
    <xs:complexType>
        <xs:sequence>
            <xs:element name="areaDesc" type="xs:string" />
            <xs:element name="polygon" type="xs:string" />
        </xs:sequence>
    </xs:complexType>
</xs:element>

我刚开始使用XML三天前,所以对于有超过一周经验的人来说,答案可能是显而易见的,或者甚至可能无法实现。但是,嘿,至少我知道到目前为止我还不知道的事情。

1 个答案:

答案 0 :(得分:0)

你正在走上正轨。不要担心,除了不受约束的areaDesc之外,您无法进一步限制xs:string。对于诸如名称或描述之类的数据而言,这是常见且完全可以接受的,其中不存在先验已知的可枚举值集。

请注意,您需要area个元素的容器元素,因为XML文档必须只有一个根元素。

相关问题