Xml 在XSD中定义元素引用
如何编写xsd来表示下面所示的xml(取自)Xml 在XSD中定义元素引用,xml,xsd,Xml,Xsd,如何编写xsd来表示下面所示的xml(取自) 阿扬·波茨马 在本例中,passenger.flight引用的是另一个航班元素(在本例中,是passenger的祖父母)。在编写XSD时,您实际上如何处理这个问题?这可能包括循环引用的情况,或者只是为了方便起见,通过使用引用将表示复杂类型的元素的重复保持在最低程度。除非使用引用全局元素的建模方法(也称为“salami slice”模式),因为不能用相同的名称定义两个全局元素。如果您使用稍微基于类型的方法,这没有问题(注意,为了清楚起见,我省略了重
阿扬·波茨马
在本例中,passenger.flight引用的是另一个航班元素(在本例中,是passenger的祖父母)。在编写XSD时,您实际上如何处理这个问题?这可能包括循环引用的情况,或者只是为了方便起见,通过使用引用将表示复杂类型的元素的重复保持在最低程度。除非使用引用全局元素的建模方法(也称为“salami slice”模式),因为不能用相同的名称定义两个全局元素。如果您使用稍微基于类型的方法,这没有问题(注意,为了清楚起见,我省略了重复乘客列表):
顺便说一句:我认为乘客内部的航班参考将指向其他地方,如果乘客包含在航班祖先中,这是多余的。这似乎可行-我的问题是我在“意大利腊肠切片”中,并在xsd中到处使用元素参考。
<flight number="KL1117">
<passengers>
<passenger>
<name>Arjen Poutsma</name>
<flight href="KL1117" />
</passenger>
</passengers>
</flight>
<xs:complexType name="FlightDefinition">
<xs:sequence>
<xs:element name="passenger" type="Passenger"/>
</xs:sequence>
<xs:attribute name="number" type="xs:ID" use="required"/>
</xs:complexType>
<xs:complexType name="Passenger">
<xs:sequence>
<xs:element name="name" type="xs:string"/>
<xs:element name="flight" type="FlightReference"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="FlightReference">
<xs:attribute name="href" type="xs:IDREF" use="required"/>
</xs:complexType>
<xs:element name="flight" type="FlightDefinition"/>