XSD:对属性的限制不断给我一个错误

时间:2014-05-02 09:13:31

标签: xml validation schema xsd

我想对studentId创建一个限制。所有Id以2个大写字母开头,后跟6个数字。

这是我的XML:

 <resource studentId="BB244663" type="course">
        <course>Advanced Mechanics</course>
        <courseNumber>764839211-19-H</courseNumber>
 </resource>   

这是我制作的架构规则

<xs:element name="resource">
<xs:complexType>
  <xs:sequence>
    <xs:element name="course" type="xs:string"/>
    <xs:element name="courseNumber" type="xs:string"/>
  </xs:sequence>
  <xs:attribute name="studentId"> <!-- rule starts here ###-->
      <xs:simpleType>
            <xs:restriction base="xs:string">
                <xs:pattern value="[A-Z] [A-Z] [0-9] [0-9] [0-9] [0-9] [0-9] [0-9]"/>
            </xs:restriction>
      </xs:simpleType>
  </xs:attribute>  <!-- rule ends here ###-->
  <xs:attribute name="type" type="xs:string" use="required"/>
</xs:complexType>

每次我尝试验证XML文件时,都会抛出此错误:

cvc-pattern-valid: Value 'BB244663' is not facet-valid with respect to pattern '[A-Z] [A-Z] [0-9] [0-9] [0-9] [0-9] [0-9] [0-9]' for type '#AnonType_studentIdresource'. [13] 
cvc-attribute.3: The value 'BB244663' of attribute 'studentId' on element 'resource' is not valid with respect to its type, 'null'. [13] 

我在网上看了但是我看不出限制有什么问题,除非是因为它是一个属性而不是一个元素?

1 个答案:

答案 0 :(得分:1)

您的模式并不完全正确。内部空间实际上用作模式。

将模式值更改为

[A-Z]{2}[0-9]{6}

应该解决问题。