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

XML校验报错:如何在XSD中为自定义元素启用xml:lang属性?

解决xml:lang属性校验报错的方法

问题原因

xml:lang是XML内置http://www.w3.org/XML/1998/namespace命名空间下的属性,默认XSD不会自动允许自定义元素使用该属性,必须在XSD中显式声明授权。

具体修改步骤

  1. 调整test.xsd文件
    找到mystring元素的定义,通过扩展类型的方式添加对xml:lang属性的引用:
<?xml version="1.0" encoding="utf-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
            xmlns:xml="http://www.w3.org/XML/1998/namespace">
  <!-- 保留原有其他元素定义 -->
  <xsd:element name="mystring">
    <xsd:complexType>
      <xsd:simpleContent>
        <xsd:extension base="xsd:string">
          <!-- 声明允许使用xml:lang属性,use="optional"表示属性可选 -->
          <xsd:attribute ref="xml:lang" use="optional"/>
        </xsd:extension>
      </xsd:simpleContent>
    </xsd:complexType>
  </xsd:element>
  <!-- 保留原有其他元素定义 -->
</xsd:schema>

如果mystring原本就是复杂类型(包含其他属性或子元素),只需在其complexType节点内直接添加<xsd:attribute ref="xml:lang" use="optional"/>即可。

  1. 简化XML文件(可选)
    XML里的xmlns:xml="http://www.w3.org/XML/1998/namespace"声明是多余的——xml前缀是XML标准默认绑定到该命名空间的,删除后不影响功能:
<?xml version="1.0" encoding="utf-8" ?> 
<root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:noNamespaceSchemaLocation="test.xsd"> 
    <myname> 
        <description> 
            <mystring xml:lang="en"></mystring> 
            <mystring xml:lang="fr"></mystring> 
        </description> 
    </myname> 
</root>

验证

修改完成后重新校验XML,xml:lang属性的报错即可消除。

内容的提问来源于stack exchange,提问作者wq.D

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 08:48:31