定义具有相同属性和元素名称的XSD

时间:2016-07-12 16:37:51

标签: xml ssis xsd

我已经问过这个问题。我想我之前可能会错误地提出这个问题。我想在xsd中出现三次相同类型的xsd元素。我想知道是否有可能。

我在下面给出了我预期的xml输出。

 <Primary>
     <Name>Harold</Name> (guy1 data)
      <Mobile>2356</Mobile>
  </Primary>
  <Primary>
       <Name>Finch</Name>(guy2 data)
    <Mobile>4567</Mobile>
   </Primary>
   <Primary>
     <Name>John</Name>(guy3 data)
       <Mobile>1234</Mobile>
    </Primary>

我为这个想要的xml创建了XSD。

<xs:element name="primary" minOccurs="0" maxOccurs="unbounded">
<xs:complexType >
<xs:sequence>
<xs:element name="name" type="xs:string"></xs:element>
<xs:element name="mobile" type="xs:string"></xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>

这是我想要的场景。我知道主要标签在我的xml中会出现三次。我想知道我是否可以使元素在xsd中也出现三次。也许是这样的

<xs:element name="primary" minOccurs="0" maxOccurs="unbounded">
<xs:complexType >
<xs:sequence>
<xs:element name="name" type="xs:string"></xs:element>
<xs:element name="mobile" type="xs:string"></xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="primary" minOccurs="0" maxOccurs="unbounded">
<xs:complexType >
<xs:sequence>
<xs:element name="name" type="xs:string"></xs:element>
<xs:element name="mobile" type="xs:string"></xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="primary" minOccurs="0" maxOccurs="unbounded">
<xs:complexType >
<xs:sequence>
<xs:element name="name" type="xs:string"></xs:element>
<xs:element name="mobile" type="xs:string"></xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>

如果这是一个愚蠢的问题,我会事先道歉。我是XSD和XML的新手。我需要它在xsd中出现三次的原因是我在Visual Studio 2012中从Tf xml生成器创建xml。我需要在xsd中将数据一对一映射。如果我使用复杂类型和序列,它只在xsd中出现一次,我不能将man 2和guy 3的数据与标签相关联,因为它在xsd中只出现一次。我试图这样做,因为我试图避免编码。如果我无法做到这一点,我将研究使用visual studio ssis包中的脚本组件。

1 个答案:

答案 0 :(得分:0)

经过一个月的搜索和研究,我今天找到了答案。

How to create a schema for an unordered list of XML nodes, with occurrence constraints

Validating XML with XSDs ... but still allow extensibility

感谢这两个帖子,我能够创建一个xsd,这将使我的xsd中的标签出现三次使用xs:choice标签