设置具有属性的XSD元素的元素内容

时间:2012-04-10 13:56:55

标签: xml xsd

我很难声明一个包含文本字符串的元素,并且有两个文本属性:

<?xml version="1.0" encoding="UTF-8"?>
<!-- This schema is not valid -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

    <xs:element name="Favorite" type="xs:string">
        <xs:complexType>
            <xs:attribute name="car"    type="xs:string"/>
            <xs:attribute name="fruit" type="xs:string"/>
        </xs:complexType>
    </xs:element>       
</xs:schema>

如果删除属性,架构就会通过,如下所示:

<?xml version="1.0" encoding="UTF-8"?>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
        <xs:element name="Favorite" type="xs:string">
        </xs:element>
    </xs:schema>

或者如果我省略type="xs:string"中的<xs:element name="Favorite" type="xs:string">

所需的模式应该验证以下XML文件:

<?xml version="1.0" encoding="UTF-8"?>
<Favorite car="Volvo" fruit="banana">These are a few of my favorite things</Favorite>

PS:如果这个问题相当简单,我很抱歉。我还是XSD的初学者。

1 个答案:

答案 0 :(得分:2)

w3schools找到答案:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:element name="Favorite">
        <xs:complexType>

            <xs:simpleContent>
                <xs:extension base="xs:string">
                    <xs:attribute name="car" type="xs:string"/>                 
                    <xs:attribute name="fruit" type="xs:string"/>   
                </xs:extension>
            </xs:simpleContent>

        </xs:complexType>
    </xs:element>
</xs:schema>