Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xml 使用xsd验证元素和属性 德国的 英语 西班牙的_Xml_Xsd - Fatal编程技术网

Xml 使用xsd验证元素和属性 德国的 英语 西班牙的

Xml 使用xsd验证元素和属性 德国的 英语 西班牙的,xml,xsd,Xml,Xsd,我正在尝试验证这个xml文档,这样我至少可以有2种语言,最多可以有无限语言。我试着使用这个代码 <spokenLanguages> <language fluency="3">German</language> <language fluency="3">English</language> <language fluency="1">Spanish</language&

我正在尝试验证这个xml文档,这样我至少可以有2种语言,最多可以有无限语言。我试着使用这个代码

<spokenLanguages>
        <language fluency="3">German</language>
        <language fluency="3">English</language>
        <language fluency="1">Spanish</language>
    </spokenLanguages>


但这并不是在验证。有什么建议吗?

您的XSD模式有几个问题,包括您从未为
spokenLanguages
标记定义
。此外,流利度属性应定义为简单类型

<xsd:complexType name="LanguageType">
<xsd:choice minOccurs="2">
    <xsd:element name="language" type="xsd:string" minOccurs="2" maxOccurs="unbounded">     
        <xsd:attribute name="fluency" use="required">
                <xsd:restriction base="xsd:integer">
                    <xsd:enumeration value="1"/>
                    <xsd:enumeration value="2"/>
                    <xsd:enumeration value="3"/>
                    <xsd:enumeration value="4"/>
                </xsd:restriction>
        </xsd:attribute>    
    </xsd:element>
</xsd:choice>

验证器说“元素‘语言’必须没有字符或元素信息项[子项],因为该类型的内容类型为空。”如果我在元素名称语言之后输入一个类型,它也不允许我这样做,因为它说我在属性中已经有了一个类型,不能有two@TylerMiddleton我更新了答案,将所有内容都放在一个XSD中。
<?xml version="1.0" encoding="utf-16"?>
<xsd:schema attributeFormDefault="unqualified" elementFormDefault="qualified"
    version="1.0" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <xsd:element name="spokenLanguages">
        <xsd:complexType>
            <xsd:sequence minOccurs="2" maxOccurs="unbounded">
                <xsd:element name="language">
                    <xsd:simpleType>
                        <xsd:restriction base="xsd:integer">
                            <xsd:enumeration value="1"/>
                            <xsd:enumeration value="2"/>
                            <xsd:enumeration value="3"/>
                            <xsd:enumeration value="4"/>
                        </xsd:restriction>
                    </xsd:simpleType>
                </xsd:element>
            </xsd:sequence>
        </xsd:complexType>
    </xsd:element>
</xsd:schema>