XML元素属性未声明报错:已声明属性但验证失败求助
XSD属性声明报错的解决方法
你遇到的「Attribute is not declared for element」报错,核心问题是XSD中属性类型引用错误:在声明cuatrimestre属性时,你使用了type="int",但XSD的内置简单类型必须带上命名空间前缀xs:,也就是xs:int——因为你的XSD根元素绑定了xs命名空间指向标准XSD schema地址,不带前缀的int会被解析为未定义的类型,导致该属性的声明不生效,XML验证时就会判定属性未声明。
另外检查你的XML和XSD,asignatura的id属性类型是xs:string,XML中赋值为"1"是合法的,不需要修改。
修正后的XSD代码如下:
<?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="clase"> <xs:complexType> <xs:sequence> <xs:element name="asignatura"> <xs:complexType> <xs:sequence> <xs:element name="nombre"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <!-- 修正类型引用,添加xs:前缀 --> <xs:attribute name="cuatrimestre" type="xs:int"></xs:attribute> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> </xs:sequence> <xs:attribute name="id" type="xs:string"></xs:attribute> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:schema>
用修正后的XSD验证你的XML,就能通过属性声明的校验,不会再出现报错。
内容的提问来源于stack exchange,提问作者Luftrauser
相关产品推荐
相关产品推荐

