为什么我不能针对我的XSD文档验证XML文档?

时间:2018-05-23 19:52:54

标签: xml xsd

XSD文件:

<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.w3schools.com"
xmlns="http://www.w3schools.com"
elementFormDefault="qualified">
<xs:element name="esport">
  <xs:complexType>
  <xs:sequence>
    <xs:element name="dota">
        <xs:complexType>
        <xs:sequence>
            <xs:element name="team">
              <xs:complexType>
              <xs:sequence>
                <xs:attribute name="mmr" type="xs:integer">
                    <xs:restriction>
                        <xs:minInclusive value="3000"/>
                        <xs:maxInclusive value="7000"/>
                    </xs:restriction>
                </xs:attribute>
                <xs:element name="name" type="xs:string"/>
                <xs:element name="country" type="xs:string"/>
                <xs:element name="members">
                <xs:complexType>
                <xs:sequence>
                    <xs:attribute name="role" use="required">
                    <xs:restriction base="xs:string">
                            <xs:enumeration value="solomid"/>
                            <xs:enumeration value="support"/>
                            <xs:enumeration value="carry"/>
                            <xs:enumeration value="offlaner"/>
                    </xs:restriction>
                    </xs:attribute>
                    <xs:attribute name="kda_avg" use="required">
                    <xs:restriction base="xs:integer">
                        <xs:patern value="[0-999]/[0-999]/[0-999]"/>
                    </xs:restriction>
                    </xs:attribute>
                </xs:sequence>
                </xs:complexType>
                </xs:element>
            </xs:sequence>
            </xs:complexType>
            </xs:element>
        </xs:sequence>
        </xs:complexType>
    </xs:element>
    </xs:sequence>
  </xs:complexType>
</xs:element>
</xs:schema>

xml文档:

<?xml version="1.0" encoding="utf-8"?>
<esport>
    <dota2>
        <team mmr="5660">
            <name> The Alliance</name>
            <country> Sweden </country>
            <members>
                <member role="solomid" kda_avg="12/5/4">s4</member>
                <member role="offlaner" kda_avg="9/6/5">Admiral</member>
                <member role="support" kda_avg="7/7/3">Akke</member>
                <member role="support" kda_avg="6/7/2">EGM</member>
                <member role="carry" kda_avg="15/6/5">Loda</member>
            </members>
        </team>
        <team>
            <name> Neolution Orange</name>
            <country> Malaysia </country>
            <members>
                <member role="carry" kda_avg="12/5/4">Mushi</member>
                <member role="support" kda_avg="9/6/5">Net</member>
                <member role="offlaner" kda_avg="7/7/3">ky.xy</member>
                <member role="support" kda_avg="6/7/2">XtincT</member>
                <member role="solomid" kda_avg="15/6/5">Ohaiyo</member>
            </members>
        </team>
    </dota2>
</esport>   

你可以通过解决我的问题来帮助我:

  

错误1:s4s-elt-must-match.1:
  'sequence'的内容必须匹配(注释?,(element | group | choice | sequence | any)*)   从:attribute开始发现问题。   错误2:cvc-elt.1.a:找不到元素'esport'的声明。

1 个答案:

答案 0 :(得分:0)

信息非常明确:xs:attribute无法显示为xs:sequence的孩子。我不确定别人怎么说。您的架构无效,需要修复。

快速浏览一下就会发现另一个问题:拼写xs:patern(原文如此)是错误的。

此外,作为策略问题,除非您拥有域,否则不应使用命名空间。您没有www.w3schools.com,因此不应使用该命名空间。