使用XSD Schema验证XML或生成类时遇粒子限制推导无效错误
问题原因分析
你遇到的**"Invalid particle derivation by restriction"**错误,核心原因是XSD Schema本身存在命名空间配置错误,导致元素约束定义不符合XML Schema规范。
具体细节:
命名空间配置矛盾:
XSD根元素的命名空间设置存在冲突:- 默认命名空间被设为
mfp:anaf:dgti:d406:declaratie:v1(不含末尾的t) - 目标命名空间设为
mfp:anaf:dgti:d406t:declaratie:v1(含t) - 同时用
nsSAFT前缀映射到目标命名空间
这种配置下,XSD中未加前缀的元素会默认归属到不含
t的命名空间,而目标命名空间的元素需要显式使用nsSAFT前缀标识。- 默认命名空间被设为
元素约束的命名空间不匹配:
错误提示中的Name元素约束问题,大概率是因为定义元素限制时未正确使用nsSAFT前缀:- 基础复杂类型中用
nsSAFT:Name定义了目标命名空间下的元素 - 但在限制该类型时,直接写了
<xs:element name="Name">(未加前缀),导致该元素被归属到默认的不含t的命名空间
根据XML Schema规范,元素限制要求派生元素与基础元素必须同名(包括命名空间),且派生类型必须是基础类型的有效限制。由于命名空间不匹配,验证器判定这不是合法的元素限制。
- 基础复杂类型中用
XML修改无效的原因:
你修改XML中的命名空间后仍报错,是因为错误根源在XSD本身而非XML文档。XML验证工具和xsd.exe会先检查XSD的合法性,只有XSD本身正确,才能进行后续的XML验证或类生成操作。
内容的提问来源于stack exchange,提问作者bzamfir
相关产品推荐
相关产品推荐

