这就是我的xsd的样子。空气和汽车延伸段。XML自动生成问题
<xs:element name="PNR" type="PNR" />
<xs:element minOccurs="0" maxOccurs="1" name="Segments" >
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" name="Segment" type="Segment"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:complexType name="Air">
<xs:complexContent>
<xs:extension base="Segment">
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="1" name="Departure" type="AirportInfo" />
<xs:element minOccurs="0" maxOccurs="1" name="Arrival" type="AirportInfo" />
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="Car">
<xs:complexContent>
<xs:extension base="Segment">
<xs:sequence>
<xs:element name="PickUp" type="AddressInfo" minOccurs="0" maxOccurs="1"/>
<xs:element name="DropOff" type="AddressInfo" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
我想要的输出,看起来像这样:
<Segments>
<Segment xsi:type="Air">
<Departure></Departure>
<Arrival></Arrival>
</Segment>
<Segment xsi:type="Car">
<PickUp></PickUp>
<DropOff></DropOff>
</Segment>
</Segments>
但是,当我使用的工具,例如XMLSpy的或.NET库(或其他)自动生成从我的XSD XML,我得到这个(空气产生多次W/O车)。
<Segments>
<Segment xsi:type="Air">
<Departure></Departure>
<Arrival></Arrival>
</Segment>
<Segment xsi:type="Air">
<Departure></Departure>
<Arrival></Arrival>
</Segment>
</Segments>
我的XSD有问题吗?
它为什么会生成你想要的XML?它根据您的模式生成有效的XML。您的架构不会阻止两个“Air”元素。 – 2012-01-10 20:52:57
我不介意它是否会产生两个“空气”......我需要它来产生“汽车”......我该怎么做? – Laguna 2012-01-10 20:56:42
你为什么要做自动生成?目的是什么?自动生成仅用于生成示例文档。 – 2012-01-10 20:57:50