我已经问过这个问题。我想我之前可能会错误地提出这个问题。我想在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包中的脚本组件。
答案 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标签