xml - xsd:unique with optional attributes -
i have xml file:
<objects> <object name="id1" /> <object name="id2" /> <object name="id2" color="green" /> <object name="id3" color="green" /> <objects> i validate against xsd schema, combination between name , color unique in document.
the problem that, if use:
<xs:unique name="uniqueobjectnamecolor"> <xs:selector xpath="./object" /> <xs:field xpath="@name" /> <xs:field xpath="@color" /> </xs:unique> ... rule ignore object elements without optional color attribute. following validates correctly while shouldn't.
<object name="id2" /> <object name="id2" /> can tell me how can specify rule enforces unique name , color combinations and, when color attribute not present in element object, checks name?
use use , default or without value like:
<element name="objects"> <complextype> <sequence> <element name="object" maxoccurs="unbounded"> <complextype> <attribute name="name" type="string" /> <attribute name="color" type="string" use="optional" default="nocolor" /> </complextype> </element> </sequence> </complextype> <unique name="uniqueobjectnamecolor"> <selector xpath="tns:object" /> <field xpath="@name" /> <field xpath="@color" /> </unique> </element> </schema>
Comments
Post a Comment