我目前正在尝试开发一个XSD Schema以获取可在http://intranet.servofarma.com/xml/schema/facturas.xsd处看到的开发票信息。在XSD实例文档中使xml元素的内容唯一
我的问题是如何使nroFactura
元素的内容在整个XSD实例文档中唯一?我试图使用<unique>
,但我不清楚如何使用这个约束。
我目前正在尝试开发一个XSD Schema以获取可在http://intranet.servofarma.com/xml/schema/facturas.xsd处看到的开发票信息。在XSD实例文档中使xml元素的内容唯一
我的问题是如何使nroFactura
元素的内容在整个XSD实例文档中唯一?我试图使用<unique>
,但我不清楚如何使用这个约束。
我不认为你可以得到比@迈克尔(+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>
然后结果是这样的:
还有一件事我会提的是利用.//
对比的是具体的。前者是让事情开始的好方法;在大型XSD中处理标签可能会在不同环境中“重复使用”的情况下,可能也很难处理。我认为这是一个更好的做法,尽可能具体地比尝试匹配所有东西......当然,除非这是要求。
XSD中的“唯一”约束允许您说“给定Y内的每个X必须具有Z的唯一值”。约束依赖于Y的定义.xs:selector定义了一个XPath表达式来从Y中选择X(例如,// nroFactura),并且xs:字段定义了一个XPath表达式来从X中选择Z(例如, “。”选择元素本身的字符串值)
好吧,这意味着“每里面必须有一个独特的价值???”我的意思是,什么是Z? –
danielperaza
Z是。 (文本值),X是tns:factura/tns:nroFactura,Y是facturas。 –