Re: xs:unique question

On 2/14/07, Markus Gamperl <markus.gamperl@gmx.at> wrote:
>
> Hi.
>
> I have defined the following complex type with a unique:
>
> <xs:complexType name="root">
>  <xs:sequence>
>   <xs:element name="name" type="xs:string"/>
>   <xs:element name="daten" nillable="true">
>    <xs:complexType>
>     <xs:sequence>
>      <xs:element name="preiszeile">
>        <xs:complexType>
>         <xs:sequence maxOccurs="unbounded">
>         <xs:element name="zweig" type="xs:integer"/>
>         <xs:element name="herkunft" type="xs:integer"/>
>         <xs:element name="anzahlen" type="xs:string"/>
>      </xs:sequence>
>     </xs:complexType>
>    </xs:element>
>   </xs:sequence>
>  </xs:complexType>
>  <xs:unique name="uniquepreis">
>   <xs:selector xpath="preiszeile"/>
>   <xs:field xpath="zweig"/>
>   <xs:field xpath="herkunft"/>
>  </xs:unique>
> </xs:element>
> </xs:sequence>
> </xs:complexType>
>
> example for a xml file:
> <root>
>  <name>76</name>
>   <daten>
>    <preiszeile>
>         <zweig>11</zweig>
>         <herkunft>0</herkunft>
>         <anzahlen>test</anzahlen>
>    </preiszeile>
>    <preiszeile>
>         <zweig>11</zweig>
>         <herkunft>0</herkunft>
>         <anzahlen>test</anzahlen>
>    </preiszeile>
>    <preiszeile>
>         <zweig>11</zweig>
>         <herkunft>0</herkunft>
>         <anzahlen>test</anzahlen>
>    </preiszeile>
>    ...
>   </daten>
> </root>
>
> I want a unique key over all zweig + herkunft elements.
> Therefore I used xs:unique but it don't work...


You appear to have put maxOccurs="unbounded" on the wrong xs:sequence
- you need to put on the sequence defining the <preiszeile> children
of <daten>, according to your example input.


cheers
andrew

Received on Wednesday, 14 February 2007 14:59:48 UTC