0

我目前正在尝试为发票信息开发 XSD 架构,可以在http://intranet.servofarma.com/xml/schema/facturas.xsd看到。

我的问题是如何使nroFactura元素的内容在 XSD 实例文档中唯一?我尝试使用<unique>,但我不清楚如何使用此约束。

4

2 回答 2

1

XSD 中的“唯一”约束允许您说“给定 Y 中的每个 X 都必须具有唯一的 Z 值”。约束继续 Y 的定义。 xs:selector 定义了一个 XPath 表达式以从 Y 中选择 X(例如,.//nroFactura),而 xs:field 定义一个 XPath 表达式以从 X 中选择 Z(例如, "." 选择元素本身的字符串值)

于 2012-09-04T22:13:20.433 回答
0

我认为您无法得到比@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 中也可能难以处理标签可能在不同上下文中“重用”的情况。我会说尽可能具体而不是试图匹配所有内容是更好的做法......当然,除非这是要求。

于 2012-09-04T23:10:23.130 回答