我正在尝试从Question.xsd生成问题和标记类。但我无法在问题中添加2个(或更多)标签。如果我<xs:element ref="schemas:Tag">
它有效(但会限制添加一个标签)。如果我删除<xs:element name="Tag">
并将名称放在<xs:complexType >
而不是Tag节点,它也可以。但是生成的ArrayOfTag包含String of List而不是List of Tag。实现这一目标的正确方法是什么?
<xs:element name="Question">
<xs:complexType>
<xs:all>
**<xs:element name ="tag1" type="schemas:Tag"/>
<xs:element name ="tag2" type="schemas:Tag"/>**
</xs:all>
</xs:complexType>
</xs:element>
<xs:element name="ArrayOfTag">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" ref="schemas:Tag"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Tag">
<xs:complexType >
<xs:all>
<xs:element name="tagCode" type="xs:string" />
<xs:element name="tagName" type="xs:string" />
</xs:all>
</xs:complexType>
</xs:element>
答案 0 :(得分:1)
这足以满足您的需求。不要将Tag设为元素,而是将其设置为complextype,以便不使用ref,而是可以在任何需要标记类型元素的地方使用类型。
<xs:element name="Question">
<xs:complexType>
<xs:all>
<xs:element name="tag1" type="Tag" />
<xs:element name="tag2" type="Tag"/>
</xs:all>
</xs:complexType>
</xs:element>
<xs:element name="ArrayOfTag">
<xs:complexType>
<xs:sequence>
<xs:element name="ArrayofTag" maxOccurs="unbounded" type="Tag"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:complexType name="Tag">
<xs:all>
<xs:element name="tagCode" type="xs:string" />
<xs:element name="tagName" type="xs:string" />
</xs:all>
</xs:complexType>