2015-10-27 69 views
0

我试图从Question.xsd生成问题和标记类。但我无法在问题中添加2个(或更多)标签。如果我做<xs:element ref="schemas:Tag">它的作品(但将限于添加一个标签)。如果我删除<xs:element name="Tag">并将地名命名为<xs:complexType >而不是标记节点,它也可以工作。但生成的ArrayOfTag包含字符串列表而不是标记列表。什么是实现这一目标的正确方法?无法从xsd生成适当的类

<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> 

回答

1

这就足够了你的需要。不要使Tag成为一个元素,而要使它成为复杂类型,以便不使用ref就可以在任何需要类型标记的元素的地方使用type。

<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> 
+0

是的,我能够弄清楚这一点。感谢您发布正确的答案。 – Forkmohit