2010-03-05 9 views
18

que quieren asegurarse de que no existen títulos de libros duplicados en el siguiente xml:¿Cómo puedo garantizar los valores únicos de los elementos en un esquema XML?

<?xml version="1.0" encoding="UTF-8"?> 
<books xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:noNamespaceSchemaLocation="books3.xsd"> 
    <book> 
     <title>Book1</title> 
    </book> 
    <book> 
     <title>Book2</title> 
    </book> 
    <book> 
     <title>Book1</title> <!-- duplicate should not be allowed --> 
    </book> 
</books> 

que estoy usando el siguiente esquema:

<?xml version="1.0" encoding="UTF-8"?> 
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"> 
    <xs:element name="books"> 
    <xs:complexType> 
     <xs:sequence> 
     <xs:element maxOccurs="unbounded" ref="book"/> 
     </xs:sequence> 
    </xs:complexType> 
    <xs:unique name="testUnique"> 
     <xs:selector xpath="book"/> 
     <xs:field xpath="title"/> 
    </xs:unique> 
    </xs:element> 
    <xs:element name="book"> 
    <xs:complexType> 
     <xs:sequence> 
     <xs:element ref="title"/> 
     </xs:sequence> 
    </xs:complexType> 
    </xs:element> 
    <xs:element name="title" type="xs:NCName"/> 
</xs:schema> 

editor de oXygen XML me dice que esto es válido cuando puedo validar .

¿Alguien puede ver lo que estoy haciendo mal?

Respuesta

11

el esquema parece correcto y debería detectar el duplicado. puede ser un error en el oxígeno?

puede probar este sitio para validar su xml: http://www.xmlvalidation.com

y verá que encuentra errores en su XmlDocument:

Duplicar valor único [Libro1] declarado para restricción de identidad de elemento "libros"

+0

Cheers. No importa cuántas veces revalide en Oxygen, no mostraría el error. Pero cuando reinicio Oxygen, arroja el error de validación anterior. –

Cuestiones relacionadas