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

XSLT转换时多余@part属性问题及xml-model指令解析

问题解答

一、多余@part="N"属性出现的原因

你遇到的情况是因为<?xml-model>指令让Oxygen XML Editor自动加载了对应的Schema文件,而这个Schema中定义了part属性(可能是默认属性、隐含属性,或是Schema处理逻辑中自动为<p>元素添加的属性)。当Saxon处理器在Schema感知模式下处理XML时,会将Schema关联的这些附加属性保留在节点中,而<xsl:copy-of>的作用是完整复制节点的所有内容(包括所有属性,不管是文档原生的还是Schema注入的),所以最终输出的<p>标签会带上part属性。

当你移除<?xml-model>指令后,Oxygen不再加载对应的Schema,节点也就不会被注入这个额外属性,自然复制出来的<p>就没有part属性了。

二、<?xml-model>指令的具体含义

<?xml-model>是W3C标准化的XML处理指令,核心作用是在XML文档内部指定要关联的Schema验证规则,支持DTD、XML Schema(XSD)、Relax NG等多种类型的Schema。

它的基本格式类似:

<?xml-model href="your-schema-file.rng" type="application/relax-ng-compact-syntax"?>

其中:

  • href:指定Schema文件的路径(本地路径或URL)
  • type:指定Schema的类型,不同类型对应不同的MIME值,比如DTD对应application/xml-dtd,XSD对应http://www.w3.org/2001/XMLSchema

XML编辑器(比如Oxygen)会识别这个指令,自动加载对应的Schema,提供实时语法校验、标签自动补全、结构提示等功能;而支持Schema感知的XML处理器(比如Saxon-EE)在处理时,会根据Schema的规则对节点进行增强处理,比如添加默认属性、验证数据类型等,这就是你看到part属性被带出来的根本原因。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 09:01:15