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

XML属性中无法解析图片外部实体的问题求助

XML外部实体在属性中无法解析的解决方法

问题场景

我有一份将图片作为外部实体的XML文档,XML Schema规定<image>元素的src属性类型为xs:ENTITY,但在Visual Studio Code中验证时触发错误:

The value 'su.jpg' of attribute 'src' on element 'image' is not valid with respect to its type, 'ENTITY'.xml(cvc-attribute.3)

XML文档内容:

<!DOCTYPE catalog [
    <!NOTATION jpg SYSTEM "image/jpg">
    <!ENTITY su.jpg SYSTEM "su.jpg" NDATA jpg>
]>
<catalog>
...
    <image src="su.jpg" />
...

</catalog>

XML Schema相关片段:

...
<xs:element name="image">
    <xs:complexType>
        <xs:attribute name="src" type="xs:ENTITY" use="required" />
    </xs:complexType>
</xs:element>
...

项目要求二进制数据必须以XML实体形式存在,无法将属性类型改为xs:string。

错误原因

xs:ENTITY类型的属性要求值是已声明的实体名称,而非实体指向的文件名。当前直接填写su.jpg是文件名,并非实体的合法引用;同时实体名su.jpg虽符合XML命名规范,但部分验证工具对包含句点的实体名兼容性较差,也可能引发识别问题。

解决步骤

  1. 修正实体名称:将实体名改为无特殊字符(如句点)的合法名称,例如su_jpg,避免兼容性问题;
  2. 属性中引用实体名:将<image>的src属性值改为修正后的实体名,让验证器识别为合法的实体引用。

修改后的XML文档:

<!DOCTYPE catalog [
    <!NOTATION jpg SYSTEM "image/jpg">
    <!ENTITY su_jpg SYSTEM "su.jpg" NDATA jpg>
]>
<catalog>
...
    <image src="su_jpg" />
...

</catalog>

这样修改后,XML验证器会正确识别su_jpg为已声明的外部实体,符合xs:ENTITY类型的验证要求。

内容的提问来源于stack exchange,提问作者Kotaka Danski

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 19:05:16