2012-09-04 48 views

回答

0

我不认为你可以得到比@迈克尔(+1)更简洁的答案;不过,我想你也可以从这些额外的说明中受益。

鉴于您的XSD,Michael的'符号'中的Y只能是facturas,因为它是XSD中唯一的元素。

enter image description here

修改:

<element name="facturas" type="tns:facturasType"> 
    <unique name="pk1"> 
     <selector xpath="tns:factura/tns:nroFactura"/> 
     <field xpath="."/> 
    </unique> 
</element> 

然后结果是这样的:

enter image description here

还有一件事我会提的是利用.//对比的是具体的。前者是让事情开始的好方法;在大型XSD中处理标签可能会在不同环境中“重复使用”的情况下,可能也很难处理。我认为这是一个更好的做法,尽可能具体地比尝试匹配所有东西......当然,除非这是要求。

+0

好吧,这意味着“每里面必须有一个独特的价值???”我的意思是,什么是Z? – danielperaza

+0

Z是。 (文本值),X是tns:factura/tns:nroFactura,Y是facturas。 –

1

XSD中的“唯一”约束允许您说“给定Y内的每个X必须具有Z的唯一值”。约束依赖于Y的定义.xs:selector定义了一个XPath表达式来从Y中选择X(例如,// nroFactura),并且xs:字段定义了一个XPath表达式来从X中选择Z(例如, “。”选择元素本身的字符串值)