XML验证再次成为XSD

时间:2016-04-18 09:26:50

标签: xml xsd

我正在尝试针对xsd架构验证我的xml文档。

我正在使用此页面http://www.freeformatter.com/xml-validator-xsd.html,我收到错误:“S4s-elt-must-match.1:'序列'的内容必须匹配(注释?,(元素|组|选择|序列|任何)*)。发现问题从:ComplexType开始。“

以下是XML http://wklej.org/id/2303662/,此处为XSD:http://wklej.org/id/2303799/

你能帮我解决这个错误吗?我想这是Address元素的一个问题。

2 个答案:

答案 0 :(得分:1)

替换:

<xs:element name="Address" type="addressType"/>
<xs:complexType >
<xs:sequence>
<xs:element name="street" type="streetType"/>
<xs:element name="home" type="homeType"/>
<xs:element name="city" type="cityType"/>
<xs:element name="country" type="countryType"/>
<xs:element name="code" type="codeType"/>
</xs:sequence>
</xs:complexType>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:complexTypeType name="addressType">
</xs:complexTypeType>

使用:

<xs:element name="Address" type="addressType"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:complexType name="addressType">
<xs:sequence>
<xs:element name="street" type="streetType"/>
<xs:element name="home" type="homeType"/>
<xs:element name="city" type="cityType"/>
<xs:element name="country" type="countryType"/>
<xs:element name="code" type="codeType"/>
</xs:sequence>
</xs:complexType>

然后架构应该有效。

xml文件无效,如

<code>72-864</code> 

与架构中的预期模式不匹配:

<xs:pattern value="[0-9]{5}(-[0-9]{4})?"/>

我不知道哪个是正确的。

答案 1 :(得分:0)

替换以下内容:

<xs:element name="person">
    <xs:complexType>
        <xs:sequence minOccurs="0" maxOccurs="unbounded">
            <xs:element name="firstname" type="namesType"/>
            <xs:element name="lastname" type="namesType"/>
            <xs:element name="birthdate" type="birthType"/>
            <xs:element name="PESEL" type="peselType"/>
            <xs:element name="sex" type="sexType"/>
            <xs:element name="Address" type="addressType"/>
            <xs:complexType >
                <xs:sequence>
                    <xs:element name="street" type="streetType"/>
                    <xs:element name="home" type="homeType"/>
                    <xs:element name="city" type="cityType"/>
                    <xs:element name="country" type="countryType"/>
                    <xs:element name="code" type="codeType"/>
                </xs:sequence>
            </xs:complexType>
        </xs:sequence>
    </xs:complexType>
</xs:element>

<xs:complexType name="addressType">
</xs:complexType>

使用:

    <xs:element name="person">
        <xs:complexType>
            <xs:sequence minOccurs="0" maxOccurs="unbounded">
                <xs:element name="firstname" type="namesType"/>
                <xs:element name="lastname" type="namesType"/>
                <xs:element name="birthdate" type="birthType"/>
                <xs:element name="PESEL" type="peselType"/>
                <xs:element name="sex" type="sexType"/>
                <xs:element name="Address" type="addressType"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
<xs:complexType name="addressType">
    <xs:sequence>
        <xs:element name="street" type="streetType"/>
        <xs:element name="home" type="homeType"/>
        <xs:element name="city" type="cityType"/>
        <xs:element name="country" type="countryType"/>
        <xs:element name="code" type="codeType"/>
    </xs:sequence>
</xs:complexType>

正如ChrisC所说,该元素不会以当前模式验证。