XSD - 无法完成验证

时间:2016-12-10 20:24:00

标签: xml validation xsd

我正在尝试处理我的XML / XSD文件,但我的在线验证页面仍然存在问题。你能帮我一点吗?谢谢。

这是我的XSD文件的整个代码。问题是:

  

s4s-elt-invalid-content.1:'#AnonType_adresar'的内容是   无效。元素'元素'无效,错位或过于频繁发生。   第5行。

<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <xsd:element name="adresar">
        <xsd:complexType>
                <xsd:element name="osoba" minOccurs="0">
                    <xsd:complexType>
                    <xsd:sequence>
                        <xsd:element name="jmeno" type="xsd:string"/>
                        <xsd:element name="prijmeni" type="xsd:string"/>
                        <xsd:complexType>
                        <xsd:element name="email" type="xsd:string" minOccurs="0">
                            <xsd:attribute name="typ" type="at_type" use="required"/>
                        </xsd:element>
                        </xsd:complexType>
                        <xsd:complexType>
                        <xsd:element name="telefon" type="xsd:positiveInteger" minOccurs="0">
                            <xsd:attribute name="typ" type="at_type" use="required"/>
                        </xsd:element>
                        </xsd:complexType>
                        <xsd:complexType>
                        <xsd:element name="web" type="xsd:string" minOccurs="0">
                            <xsd:attribute name="typ" type="at_type" use="required"/>
                        </xsd:element>
                        </xsd:complexType>
                        <xsd:complexType>
                        <xsd:element name="jiny" type="xsd:string" minOccurs="0">
                            <xsd:attribute name="jmeno" type="xsd:string" use="required"/>
                        </xsd:element>
                        </xsd:complexType>
                    <xsd:element name="adresa" type="adresa_type" minOccurs="0"/>
                    <xsd:element name="poznamka" type="xsd:string" minOccurs="0"/>
                    </xsd:sequence>
                    </xsd:complexType>
                </xsd:element>
        </xsd:complexType>
    </xsd:element>

    <xsd:complexType name="adresa_type">
        <xsd:sequence>
            <xsd:element name="ulice" type="xsd:string"/>
            <xsd:element name="cislopop" type="xsd:positiveInteger"/>
            <xsd:element name="psc" type="xsd:positiveInteger"/>
            <xsd:element name="mesto" type="xsd:string"/>
        </xsd:sequence>
    </xsd:complexType>

    <xsd:simpleType name="at_type">
        <xsd:restriction base="xsd:string">
            <xsd:enumeration value="osobni"/>
            <xsd:enumeration value="pracovni"/>
            <xsd:enumeration value="jiny"/>
        </xsd:restriction>
    </xsd:simpleType>
</xsd:schema>

1 个答案:

答案 0 :(得分:2)

您的架构中有太多错误,我甚至不知道从哪里开始。

您报告的内容大约是xsd:element,您已将其直接放在xsd:complexType中。添加中间件xsd:sequence

接下来,您不要在序列中声明复杂类型。您不会在元素中放置属性(您需要具有简单内容和属性的复杂类型)。

我建议你从XSD Primer开始。它比盲目地对抗语法要好得多。