XML模式:扩展是标识符唯一性空间的一部分吗

XML模式:扩展是标识符唯一性空间的一部分吗,xml,xsd,Xml,Xsd,假设我声明一个类型a,然后声明另一个通过扩展从a继承的类型B。类似地,我还创建了一个从a继承的C类型。 假设A有一个属性“att”,我创建了一个键,使得“att”的值是唯一的,可以用来引用类型A的对象 B型和C型对象如何受到影响?我可以使用这种方法,使B和C共享一个标识符空间,而不是相同的类型吗 您可能会告诉我,我可以使用键的选择器同时指定B和C。但是,如果有数百种不同的类型需要共享一个ID空间,而不是B和C,该怎么办?在这种情况下,我需要这样一个属性继承方法 谢谢:)标识约束是在元素上声明的,

假设我声明一个类型a,然后声明另一个通过扩展从a继承的类型B。类似地,我还创建了一个从a继承的C类型。 假设A有一个属性“att”,我创建了一个键,使得“att”的值是唯一的,可以用来引用类型A的对象

B型和C型对象如何受到影响?我可以使用这种方法,使B和C共享一个标识符空间,而不是相同的类型吗

您可能会告诉我,我可以使用键的选择器同时指定B和C。但是,如果有数百种不同的类型需要共享一个ID空间,而不是B和C,该怎么办?在这种情况下,我需要这样一个属性继承方法


谢谢:)

标识约束是在元素上声明的,而不是在类型上声明的;它们使用一个相当小的XPath子集来标识它们约束的键和/或唯一值

因此,使唯一性约束影响具有复杂类型A、B和C(或A、B001、B002、…B999、C001、C002、…C999)的元素的简单程度或复杂程度取决于这些元素的名称,它们在树中的显示深度是否一致,所讨论的属性是否始终具有相同的名称,谁知道还有什么

在简单情况下,约束可能看起来很简单,如下所示:

<unique name="A-uniqueness">
  <selector xpath=".//A"/>
  <field xpath="@A-unique-ID"/>
</unique>

或者这个:

<unique name="A-uniqueness-2">
  <selector xpath=".//*"/>
  <field xpath="@A-unique-ID"/>
</unique>


当然,有很多复杂化的机会。

如果我定义了一个类型,该类型包含一个本身包含属性ID的元素。如果我将唯一性约束添加到此ID,现在我创建了另一个从上一个类型派生的类型。唯一性约束是否也将应用于该新类型?在sape ID空间下作为原始类型?唯一性约束应用于输入实例中由约束声明中的
选择器
字段
信息标识的项;XPath for Selector和字段按名称而不是按类型选择项目。但是你似乎在想象一个元素E上的属性A被声明为T类型的局部属性;T的扩展或限制都不能更改E或A的名称,因此很难在唯一性约束上编写选择器,使其应用于T的实例,而不应用于从T派生的类型的实例。