почему xsd: key xsd: keyref не работает с XML-файлом? - PullRequest
0 голосов
/ 21 февраля 2012

я должен использовать 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>

почему не понимаю. Есть идеи?

1 Ответ

1 голос
/ 21 февраля 2012

Это прекрасно работает для меня (я только что добавил префикс для вашего пространства имен):

<?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>
...