我需要知道是否有一种方法可以在不使用 IDREFS 类型的情况下在 XML 模式中创建类似但比 IDREFS 更强大的东西。我需要一个作为 keyref 列表的属性。
- 我定义了一个键
- 我定义了一个 keyref
- 现在如何进行?我需要定义一个属性,它是一种 keyref 列表
例子:
myAttribute = "keyref1 keyref2 keyref3 ..." and so on
请记住:使用 IDREFS,我无法创建引用项目的列表。
不,不幸的是,keyrefs 只能选择节点,而不是节点值中的标记。
要实现这种约束,您可以使用 XSD 1.1 断言:
<xs:element name="employees">
<xs:complexType>
<xs:sequence>
<xs:element name="employee" maxOccurs="unbounded"/>
</xs:sequence>
<xs:assert test="every $id in employee/direct-reports/tokenize(., ' ')
satisfies exists(employee[id=$id])"/>
</xs:complexType>
</xs:element>