同一XML元素中能否存在两个xsi:type属性?
一个XML元素能否声明两个xsi:type属性?
XML 中元素可包含属性,xsi:type是用于指定元素具体类型的特殊属性。以下以都柏林核心(Dublin Core)为例展开分析:
参考示例
- 基础元素写法:
<dc:date>1091</dc:date>
- 带单个
xsi:type属性的合法写法:
<dc:date xsi:type="dcterms:dateCopyrighted">2022</dc:date>
疑问代码有效性判断
你给出的这段代码(注:原代码中xsi:type:=为笔误,修正为标准的xsi:type):
<dc:date xsi:type="dcterms:dateCopyrighted" xsi:type="dcterms:W3CDTF">2012-11-11</dc:date>
是无效的,原因如下:
- 从XML基础语法规则出发:同一元素下,不允许存在同一命名空间内的同名属性。
xsi:type属于http://www.w3.org/2001/XMLSchema-instance命名空间,重复声明该属性直接违反XML语法规范,这类代码会被XML解析器判定为非法,根本不会进入“属性覆盖”的处理环节。 - 从
xsi:type的设计逻辑来看:它的作用是为元素指定一个替代Schema默认定义的具体类型,一个元素仅需明确一种类型即可,重复定义本身也不符合该属性的使用场景。
内容的提问来源于stack exchange,提问作者Hugh
相关产品推荐
相关产品推荐

