You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 23:35:18