Altova Mailing List Archives>Archive Index >comp.text.xml Archive Home >Recent entries >Thread Prev - XML_Schema: problem with >Thread Next - Re: XML_Schema: problem with Re: XML_Schema: problem with To: NULL Date: 1/10/2007 1:21:00 AM Aray wrote: > I googled for it for few houres, but didn't resolve it, any hints will be > thinkfull. > > I want to use the following XSD file to guarantee <element1> is unique, but > it doesn't work. > > The following is my XSD file and XML file: > > ----------- test.xsd ---------------- > <?xml version="1.0" encoding="UTF-8"?> > <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" > xmlns="http://www.aray.com" targetNamespace="http://www.aray.com" > elementFormDefault="qualified"> > > <xs:element name="root" type="rootType"> > <xs:unique name="PK_element1"> > <xs:selector xpath="./element1"></xs:selector> > <xs:field xpath="."></xs:field> > </xs:unique> > </xs:element> > > <xs:complexType name="rootType"> > <xs:choice> > <xs:group ref="elementGroup" maxOccurs="unbounded" minOccurs="0" /> > </xs:choice> > </xs:complexType> > > <xs:group name="elementGroup"> > <xs:choice> > <xs:element name="element1" type="xs:string" /> > <xs:element name="element2" type="xs:string" /> > </xs:choice> > </xs:group> > > </xs:schema> > > > ----------- test.xml ---------------- > <?xml version="1.0" encoding="UTF-8"?> > > <root xmlns="http://www.aray.com" > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > xsi:schemaLocation="http://www.aray.com test.xsd" > > > <element1>1</element1> > <element2>1</element2> > <element1>1</element1> > <!-- > I expect this xml file is not valide, because the two <element1> has the > same content. > But it is valide > --> > </root> You need to specify the namespace in the XPath expression, otherwise "element1" is taken to be in "no namespace", which is not the case. That would work if there were no namespace involved at all. Here is the modified start of your schema: <?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www.aray.com" targetNamespace="http://www.aray.com" xmlns:ns="http://www.aray.com" elementFormDefault="qualified"> <xs:element name="root" type="rootType"> <xs:unique name="PK_element1"> <xs:selector xpath="./ns:element1"></xs:selector> <xs:field xpath="."></xs:field> </xs:unique> </xs:element> ... $ xmllint --noout --schema test.xsd test.xml test.xml:9: element element1: Schemas validity error : Element '{http://www.aray.com}element1': Duplicate key-sequence ['1']. test.xml fails to validate | ||||||
| Company | Legal | Press | Partners | Careers | Sitemap | Contact Us | Altova Blog | Mobile | Full Site | |||
|
