假设我声明了一个类型A,然后声明另一个通过扩展继承自A的类型B.同样,我还创建了一个继承自A的类型C. 假设A具有属性“att”,并且我创建了一个键,使得“att”的值是唯一的,并且可以用于引用类型A的对象。
B和C类型的对象如何受此影响?我可以使用这种方法,使B和C共享标识符空间而不是同一类型吗?
你可能告诉我,我可以使用密钥的选择器来指定B和C.但是如果不是B和C,我有数百种需要共享ID空间的不同类型呢?在这种情况下,我需要这样的属性继承方法...
谢谢:)
答案 0 :(得分:0)
身份约束是在元素上声明的,而不是类型;他们使用相当小的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>
当然有很多并发症的机会。