我创建的XML显示了调查的回复。
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type='text/xsl'?>
<survey>
<questions>
<question id="1">When did you start playing Pokemon Go?</question>
<question id="2">What type of phone/OS do you play on?</question>
<question id="3">What team are you on?</question>
<question id="4">What Level Are You?</question>
<question id="5">How many pokemon have you caught?</question>
<question id="6">How many KM have you traveled? (Jogger medal)</question>
</questions>
<responses>
<response id="1">
<answer question="1">June</answer>
<answer question="2">Android</answer>
<answer question="3">Mystic (Blue)</answer>
<answer question="4">25</answer>
<answer question="5">0 to 1000</answer>
<answer question="6">Silver</answer>
</response>
<response id="2">
<answer question="1">June</answer>
<answer question="2">Android</answer>
<answer question="3">Mystic (Blue)</answer>
<answer question="4">32</answer>
<answer question="5">0 to 1000</answer>
<answer question="6">Silver</answer>
</response>
... More responses...
</responses>
</survey>
<xs:element name="questions">
<xs:complexType>
<xs:sequence>
<xs:element name="question">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="id"
type="xs:int" use="required"
fixed="1"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="question">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="id"
type="xs:int" use="required"
fixed="2"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="question">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="id"
type="xs:int" use="required"
fixed="3"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="question">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="id"
type="xs:int" use="required"
fixed="4"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="question">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="id"
type="xs:int" use="required"
fixed="5"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="question">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="id"
type="xs:int" use="required"
fixed="6"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
我的架构一直给我一个错误,说我有多个具有相同名称的元素,但是当我尝试根据我的XML验证它时,它有不同的类型。 现在我在这里问了一个关于我的XML设计的问题,并且被告知使用不同的元素等是非常愚蠢的。这就是为什么我重复了元素名称,但每个元素都有一个识别属性。
是否有任何解决方法不涉及重新设计XML?
答案 0 :(得分:0)
XSD约束称为&#34;元素声明一致&#34;明确地说你不能拥有两个同名但不同类型的兄弟元素。
您是否确定需要这样的细粒度架构,更改问卷中的问题需要更改架构?
如果您确实想这样做,可以使用&#34;条件类型分配&#34; XSD 1.1(又名类型替代)中的一个特性,您可以根据@id属性的值来设置question
元素的类型。
但整个设计对我来说都是错误的。我会寻找描述任何可能的调查问卷的通用模式。