由于我是XML新手,可能我的术语不正确。XML Shema:允许复杂类型的元素和属性序列
我想出了这个XML格式:
<?xml version="1.1" encoding="UTF-8"?>
<?xml-model href="RuleBuilder.xsd" type="application/xml" schematypens="http://purl.oclc.org/dsdl/schematron"?>
<root>
<RuleBuilder:game_system
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="file:///./RuleBuilder.xsd RuleBuilder.xsd"
xmlns:RuleBuilder="file:///./RuleBuilder.xsd">
<RuleBuilder:rule_book>
<RuleBuilder:title>"Warhammer The Game of Fantasy Battles"</RuleBuilder:title>
<RuleBuilder:page_count>100</RuleBuilder:page_count>
<RuleBuilder:rule>
<RuleBuilder:id>0</RuleBuilder:id>
<RuleBuilder:rule_type>"character"</RuleBuilder:rule_type>
<RuleBuilder:title>"Monsterous Infantry"</RuleBuilder:title>
<RuleBuilder:description>"This is a test"</RuleBuilder:description>
<RuleBuilder:page_begin>200</RuleBuilder:page_begin>
<RuleBuilder:related_definition>0</RuleBuilder:related_definition>
</RuleBuilder:rule>
<RuleBuilder:definition>
<RuleBuilder:id>0</RuleBuilder:id>
<RuleBuilder:term>"Monsterous Infantry"</RuleBuilder:term>
<RuleBuilder:definition>"A big bertha"</RuleBuilder:definition>
<RuleBuilder:page_begin>200</RuleBuilder:page_begin>
<RuleBuilder:related_rule>0</RuleBuilder:related_rule>
</RuleBuilder:definition>
</RuleBuilder:rule_book>
</RuleBuilder:game_system>
</root>
这验证只是针对此架构罚款:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:vc="http://www.w3.org/2007/XMLSchema-versioning" xmlns="RuleBuilder"
targetNamespace="RuleBuilder" elementFormDefault="qualified" vc:minVersion="1.1">
<xs:element name="game_system">
<xs:complexType>
<xs:sequence>
<xs:element name="rule_book" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="title" type="xs:string" minOccurs="1" maxOccurs="1"/>
<xs:element name="page_count" type="xs:nonNegativeInteger" minOccurs="1" maxOccurs="1"/>
<xs:element name="rule" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="id" type="xs:nonNegativeInteger" minOccurs="1" maxOccurs="1"/>
<xs:element name="rule_type" type="xs:string" minOccurs="1" maxOccurs="1"/>
<xs:element name="title" type="xs:string" minOccurs="1" maxOccurs="1"/>
<xs:element name="descrpiption" type="xs:string" minOccurs="1" maxOccurs="1"/>
<xs:element name="page_begin" type="xs:nonNegativeInteger" minOccurs="1" maxOccurs="1"/>
<xs:element name="related_definition" type="xs:nonNegativeInteger"/>
<xs:element name="related_rule" type="xs:nonNegativeInteger"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="definition" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="id" type="xs:nonNegativeInteger" minOccurs="1" maxOccurs="1"/>
<xs:element name="term" type="xs:string" minOccurs="1" maxOccurs="1"/>
<xs:element name="definition" type="xs:string" minOccurs="1" maxOccurs="1"/>
<xs:element name="page_begin" type="xs:nonNegativeInteger" minOccurs="1" maxOccurs="1"/>
<xs:element name="related_definition" type="xs:nonNegativeInteger"/>
<xs:element name="related_rule" type="xs:nonNegativeInteger"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
问题:我想知道如何做的是修改模式,以便我可以为“包装”复杂类型的某些元素添加属性。对于examle:
<?xml version="1.1" encoding="UTF-8"?>
...
<root>
<RuleBuilder:game_system
<RuleBuilder:rule_book
title="Warhammer Fantasy"> <!-- Notice that I move the title here -->
....
</RuleBuilder:rule_book>
</RuleBuilder:game_system>
</root>
实际上,您的实例不会使用该模式进行验证。一个块缺少'related_rule'。另一个缺少'related_definition'。它是你的模式是固定的还是你的实例? – helderdarocha