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

时间:2016-11-11 04:20:05

标签: xml attributes complextype

这可能接近问题here的重复。但这不一样。阅读上面的答案后,我知道必须为我的场景添加什么代码,但我无法弄清楚它的位置。这是我当前的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的属性设置为eid类型的ID  我知道下面的代码是要添加的代码,请你帮我解决一下。提前致谢

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

1 个答案:

答案 0 :(得分:0)

请您尝试更新“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"/>***