我想对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]
我在网上看了但是我看不出限制有什么问题,除非是因为它是一个属性而不是一个元素?
答案 0 :(得分:1)
您的模式并不完全正确。内部空间实际上用作模式。
将模式值更改为
[A-Z]{2}[0-9]{6}
应该解决问题。