я должен использовать xsd: key вместо xsd: ID, так я использовал этот код:
<?xml version="1.0" encoding="utf-8"?> <xs:schema targetNamespace="http://www.checkbook.com/checkbook" xmlns="http://www.checkbook.com/checkbook" xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"> <xs:element name="Serhat"> <xs:complexType> <xs:choice minOccurs="1" maxOccurs="unbounded"> <xs:element name="Serhat2" type="type"> </xs:element> </xs:choice> </xs:complexType> <xs:key name="PackageNameKey"> <xs:selector xpath=".//Serhat2"/> <xs:field xpath="@id"/> </xs:key> </xs:element> <xs:complexType name="type"> <xs:attribute name="id" type="xs:string" use="required"/> </xs:complexType> </xs:schema>
но ключ не работает, я могу взять аналогичный атрибут id;
<?xml version="1.0" encoding="utf-8"?> <Serhat xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.checkbook.com/checkbook" xsi:schemaLocation="http://www.checkbook.com/checkbook denemeXSD.xsd"> <Serhat2 id="ser"/> <Serhat2 id="ser"/> </Serhat>
почему не понимаю. Есть идеи?
Это прекрасно работает для меня (я только что добавил префикс для вашего пространства имен):
<?xml version="1.0" encoding="utf-8"?> <xs:schema targetNamespace="http://www.checkbook.com/checkbook" xmlns:ns="http://www.checkbook.com/checkbook" xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"> <xs:element name="Serhat"> <xs:complexType> <xs:choice minOccurs="1" maxOccurs="unbounded"> <xs:element name="Serhat2" type="ns:type"> </xs:element> </xs:choice> </xs:complexType> <xs:key name="PackageNameKey"> <xs:selector xpath=".//ns:Serhat2"/> <xs:field xpath="@id"/> </xs:key> </xs:element> <xs:complexType name="type"> <xs:attribute name="id" type="xs:string" use="required"/> </xs:complexType> </xs:schema>