我尝试为计算机游戏的地图数据构建以下一组 XSD 方案:
- CreatureDefinitionsSchema.xsd
- CreatureSchema.xsd
- 目标列表.xsd
- LightScheme.xsd
- RoomScheme.xsd
- SeatScheme.xsd
- TrapScheme.xsd
中心是 MapDefinitionSchema.xsd 模式,它应该引用其他模式。我还没有遇到过这样的例子,但一般的想法是创建互补集
- CreatureDefinitionsSchema.xml
- CreatureSchema.xml
- 目标列表.xml
- LightScheme.xml
- RoomScheme.xml
- 座位方案.xml
- 陷阱方案.xml
并在 MapDefinition.xml 中使用 xsd:import 。我想要的是能够针对 MapDefinitionScheme.xsd 和其他 xml 文件针对它们的 *.xsd 对应项来验证 MapDefinition.xml。
但是我看到我设法 xs:import types from other xsd (not what I want) 。我想要的更像是:
<xs:element name="GameMap">
<xs:complexType>
<xs:sequence>
<xs:element name="MapSizeX"> </xs:element >
<xs:element name="MapSizeY"> </xs:element >
<xs:include xmlns:xi="http://www.w3.org/2001/XInclude" href="SeatScheme.xsd" />
</xs:sequence>
</xs:complexType>
,但我得到
引擎名称:Xerces 严重性:错误描述:s4s-elt-must-match.1:“序列”的内容必须匹配(注释?,(元素|组|选择|序列|任何)*)。发现一个问题开始于:包括。开始地点:9:18 结束地点:9:28 <<
似乎我不能随意包含这些元素。
我的 SeatScheme.xsd :
<xs:element name="SeatList" type="Seat"/> <xs:complexType name="Seat"> <xs:sequence> <xs:element name="color" type="xs:string"/> <xs:element name="faction" type="xs:string"/> <xs:element name="startingX" type="xs:integer"/> <xs:element name="startingY" type="xs:integer"/> <xs:element name="colorR" type="xs:decimal"/> <xs:element name="colorG" type="xs:decimal"/> <xs:element name="colorB" type="xs:decimal"/> </xs:sequence> </xs:complexType> </xs:schema>
这是否可行,不是对类型而是对元素进行操作?