如何在具有序列的xsd中定义具有属性的元素

问题描述:

这可能接近于here问题的重复。但这是不一样的。在阅读上面的答案之后,我知道必须为我的场景添加哪些代码,但我无法弄清楚它放在哪里。这是我目前xsd文件 如何在具有序列的xsd中定义具有属性的元素

<tns:element name="WSO2Lanka"> 
    <tns:complexType> 
     <tns:sequence> 
      <tns:element name="Employees" type="EmployeeBaseType"> 
      </tns:element> 
     </tns:sequence> 
    </tns:complexType> 
</tns:element> 

<tns:complexType name="EmployeeBaseType"> 
    <tns:sequence> 
     <tns:element name="Employee" type="EmployeType"> 
     </tns:element> 
    </tns:sequence> 
</tns:complexType> 

<tns:complexType name="EmployeType"> 
    <tns:sequence> 
     <tns:element name="name" type="nameType"> 
     </tns:element> 
     <tns:element name="company" type="tns:string"></tns:element> 
     <tns:element name="position" type="tns:string"></tns:element> 
     <tns:element name="address" type="addressType"></tns:element> 
     <tns:element name="tele" type="tns:string"></tns:element> 

    </tns:sequence> 

</tns:complexType> 

<tns:complexType name="nameType"> 
    <tns:sequence> 
     <tns:element name="fname" type="tns:string"> 
     </tns:element> 
     <tns:element name="lname" type="tns:string"> 
     </tns:element> 
    </tns:sequence> 
</tns:complexType> 

<tns:complexType name="addressType"> 
    <tns:sequence> 
     <tns:element name="city" type="tns:string"></tns:element> 
     <tns:element name="province" type="tns:string"></tns:element> 

    </tns:sequence> 
</tns:complexType> 

,这是我需要在我的xml文件的内容。

<?xml version="1.0" encoding="UTF-8"?> 
<WSO2Lanka xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:noNamespaceSchemaLocation="../EmployeeXMLSchema.xsd"> 
    <Employees> 
     <Employee eid="001"> 
      <name> 
       <fname>kasun</fname> 
       <lname>Siyambalapitiya</lname> 
      </name> 
      <company>WSO2</company> 
      <position>intern</position> 
      <address> 
       <city>Kuliyapitiya</city> 
       <province>North Western</province> 
      </address> 
      <tele>0715523333</tele> 
     </Employee> 
    </Employees> 
</WSO2Lanka> 

正如xml我需要的元素Employee属性为ID 我知道下面的代码是要添加的一个类型的eid,可以请你帮我算出这个出。在此先感谢

<tns:complexType> 
    <tns:simpleContent> 
     <tns:extension base="tns:ID"> 

      <tns:attribute name="edi" type="tns:ID" use="required"></tns:attribute> 

     </tns:extension> 

    </tns:simpleContent> 
</tns:complexType> 

您可以请尝试通过更新“EmployeType”如下(关闭序列元素后在complexType中添加属性)?

<tns:complexType name="EmployeType"> 
<tns:sequence> 
    <tns:element name="name" type="nameType"> 
    </tns:element> 
    <tns:element name="company" type="tns:string"></tns:element> 
    <tns:element name="position" type="tns:string"></tns:element> 
    <tns:element name="address" type="tns1:addressType"></tns:element> 
    <tns:element name="tele" type="tns:string"></tns:element> 

</tns:sequence> 
<tns:attribute name="eid" type="tns:string"/> 

添加下面一行在你的 “EmployeeType” 的定义。

***<tns:attribute name="eid" type="tns:string"/>*** 
+0

感谢您的回答,我稍后再尝试,并让您知道它是否有效 –