我有一个XML架构和一个来自客户的实例文档。 例如,文件可以是:
< DOC>
< carId> 12< / carId>
< / doc的>
根据架构它是有效的。
我想用我的属性注释这个:
< DOC>
< carId myns:valid =“true”> 12< / carId>
< / doc的>
我希望带注释的文档根据某些模式有效 - 我不关心哪个模式,我想这将基于原始模式。
我的问题是,是否有某种方法可以在不更改新架构的情况下“扩展”原始架构?或者添加这些属性总是合法的,前提是它们根据自己的架构有效吗?
我不能假设原始模式,即它不一定声明其元素上允许xsd:anyAttribute。
答案 0 :(得分:1)
这将使用xsd:anyattribute声明。它可以对任何属性保持开放,限制为特定的命名空间,或者(最常见的)允许任何名称空间,而不是现在定义的名称空间。)
如果您只是想检查有效性,并且在运行时不需要架构数据,那么一个简单的答案就是从副本中删除属性并验证它。
通过扩展派生每个complexType所需的anyAttribute声明生成一个模式也很容易,只要complexTypes有名称,并且原始模式没有使用final来禁止它。
但如果你真的无法控制输入模式,除了修改输入模式之外,我没有看到任何其他选项。