2012-02-21 3 views
0

я должен использовать XSD: ключ вместо XSD: ID так я использовал этот код:Почему xsd: key xsd: keyref не работает в xml-файле?

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

но ключ не работает, я могу принять подобный идентификатор атрибут;

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

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

<?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> 
+0

Да он работал thanx.But не понимает, когда я дать пространство имен по умолчанию он не будет работать – gezgin

+0

XPath не имеет пространства имен по умолчанию , Вы всегда должны быть явным в XPath. –

+0

thanx.And еще один вопрос: могу ли я сделать этот код? gezgin

Смежные вопросы