xml – XSD元素替换组示例?

前端之家收集整理的这篇文章主要介绍了xml – XSD元素替换组示例?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我希望能够为多种扩展类型指定单选类型.

例如,说我们有海,在海里有很多种鱼.所以在XML中我会写:

  1. <Sea name="Atlantic Ocean">
  2. <Tuna name="tuna1" />
  3. <Carp name="carp1" />
  4. <Carp name="carp2" />
  5. <Tuna name="tuna2" />
  6. <Salmon name="salmon1" />
  7. </Sea>

XSD

  1. <xs:complexType name="Fish">
  2. </xs:complexType>
  3.  
  4. <xs:complexType name="Salmon">
  5. <xs:complexContent>
  6. <xs:extension base="Fish">
  7. </xs:extension>
  8. </xs:complexContent>
  9. </xs:complexType>
  10.  
  11. <xs:complexType name="Carp">
  12. <xs:complexContent>
  13. <xs:extension base="Fish">
  14. </xs:extension>
  15. </xs:complexContent>
  16. </xs:complexType>
  17.  
  18. <xs:complexType name="Tuna">
  19. <xs:complexContent>
  20. <xs:extension base="Fish">
  21. </xs:extension>
  22. </xs:complexContent>
  23. </xs:complexType>
  24.  
  25. <xs:complexType name="Sea">
  26. <xs:complexContent>
  27. <xs:extension base="GeoZone">
  28. <xs:sequence minOccurs="0" maxOccurs="unbounded">
  29. <xs:choice>
  30. <xs:element type="Fish" name="Fish" minOccurs="0"
  31. maxOccurs="unbounded"/>
  32. </xs:choice>
  33. </xs:sequence>
  34. <xs:attribute name="Name" type="xs:string" use="optional" />
  35. </xs:extension>
  36. </xs:complexContent>
  37. </xs:complexType>

不幸的是,这是无效的,因为我只能添加Fish本身而不是其扩展类型.

使用 @L_403_0@ ……

XSD

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
  3.  
  4. <xs:element name="Sea">
  5. <xs:complexType>
  6. <xs:sequence>
  7. <xs:element ref="FishSubGroup"
  8. minOccurs="0" maxOccurs="unbounded"/>
  9. </xs:sequence>
  10. <xs:attribute name="name" type="xs:string" use="optional"/>
  11. </xs:complexType>
  12. </xs:element>
  13.  
  14. <xs:element name="FishSubGroup" abstract="true"/>
  15.  
  16. <xs:element name="Tuna" type="FishType" substitutionGroup="FishSubGroup"/>
  17. <xs:element name="Carp" type="FishType" substitutionGroup="FishSubGroup"/>
  18. <xs:element name="Salmon" type="FishType" substitutionGroup="FishSubGroup"/>
  19.  
  20. <xs:complexType name="FishType">
  21. <xs:attribute name="name" type="xs:string"/>
  22. </xs:complexType>
  23. </xs:schema>

XML

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <Sea name="Atlantic Ocean">
  3. <Tuna name="tuna1"/>
  4. <Carp name="carp1"/>
  5. <Carp name="carp2"/>
  6. <Tuna name="tuna2"/>
  7. <Salmon name="salmon1"/>
  8. </Sea>

猜你在找的XML相关文章