我嘗試建立一個下面的一組XSD方案的電腦遊戲中的地圖數據:分裂XSD計劃分成幾個文件
- CreatureDefinitionsSchema.xsd
- CreatureSchema.xsd
- GoalList.xsd
- LightScheme的.xsd
- RoomScheme.xsd
- SeatScheme.xsd
- TrapScheme.xsd
中心是MapDefinitionSchema.xsd模式,它應該引用其他模式。 我還沒有」碰到過這樣的例子,但總的想法是創建一套補充
- CreatureDefinitionsSchema.xml
- CreatureSchema.xml
- GoalList.xml
- LightScheme.xml
- RoomScheme.xml
- SeatScheme.xml
- TrapScheme.xml
然後在帶有xsd:import的MapDefinition.xml中使用它。 我想要的是能夠根據MapDefinitionScheme.xsd 和其他xml文件對其* .xsd對應文件驗證MapDefinition.xml。
但是我看到我管理到xs:從其他xsd導入類型(不是我想要的)。我要的是更喜歡:
<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-必match.1:含量'序列'必須匹配(註釋?,(元素|選擇|序列|任何)*)。發現問題始於:include。 開始位置: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>
是有史以來最可行的,而不是類型,但在元件上運行?
這就是它的一半!基本上我希望每個都在單獨的xsd文件中定義,以便稍後驗證XML (僅包含遊戲數據的某些部分!)。 不能包含元素(註釋?,(全部|選擇)) –
paul424
啊我沒有注意到我可以將元素包裝在上述容器之一中,而不是組中...... – paul424