我目前正在尝试为发票信息开发 XSD 架构,可以在http://intranet.servofarma.com/xml/schema/facturas.xsd看到。
我的问题是如何使nroFactura
元素的内容在 XSD 实例文档中唯一?我尝试使用<unique>
,但我不清楚如何使用此约束。
我目前正在尝试为发票信息开发 XSD 架构,可以在http://intranet.servofarma.com/xml/schema/facturas.xsd看到。
我的问题是如何使nroFactura
元素的内容在 XSD 实例文档中唯一?我尝试使用<unique>
,但我不清楚如何使用此约束。
XSD 中的“唯一”约束允许您说“给定 Y 中的每个 X 都必须具有唯一的 Z 值”。约束继续 Y 的定义。 xs:selector 定义了一个 XPath 表达式以从 Y 中选择 X(例如,.//nroFactura),而 xs:field 定义一个 XPath 表达式以从 X 中选择 Z(例如, "." 选择元素本身的字符串值)
我认为您无法得到比@Michael (+1) 更简洁的答案;不过,我认为您也可能会从这些额外的说明中受益。
鉴于您的 XSD,Michael 的“符号”中的 Y 只能是facturas
,因为它是 XSD 中的唯一元素。
修改:
<element name="facturas" type="tns:facturasType">
<unique name="pk1">
<selector xpath="tns:factura/tns:nroFactura"/>
<field xpath="."/>
</unique>
</element>
结果如下所示:
我要提到的另一件事是使用.//
vs. 是具体的。前者是开始工作的好方法;在大型 XSD 中也可能难以处理标签可能在不同上下文中“重用”的情况。我会说尽可能具体而不是试图匹配所有内容是更好的做法......当然,除非这是要求。