2011-10-20 30 views
5

Bir XML dosyasında çalışabilmesi için xs: benzersiz belirticiyi alamıyorum. Sadece çalışan bir XPath çalışabiliyor görünmüyor. Bu sorudaki kod miktarından ötürü özür dilerim, ancak aşağıda yanlış yaptığım şeylere işaret eden herkese son derece minnettar olacağım. Ne yaptığımın bir önemi yok. Değeri çoğaltmam için bir hata bildirmek için elemandaki @ref özniteliğini alamıyorum (her bir ref benzersiz olmalıdır).Bir XML şemasında benzersiz değerler nasıl belirtilir

Bilgilere yönelik herhangi bir yardım veya işaretçi çok minnettar olabilir. Tür istediği

Patrick

Bu benim şeması yer almaktadır:

<?xml version="1.0" encoding="utf-8"?> 
<xs:schema id="Artworks" 
xmlns:xs="http://www.w3.org/2001/XMLSchema" 
xmlns:aw="http://www.fourthwish.co.uk/data/Artworks.xsd" 
xmlns="http://www.fourthwish.co.uk/data/Artworks.xsd" 
targetNamespace="http://www.fourthwish.co.uk/data/Artworks.xsd" 
elementFormDefault="qualified" 
> 
<xs:element name="artworks"> 
    <xs:complexType> 
    <xs:sequence minOccurs="0" maxOccurs="unbounded"> 
      <xs:element name="artwork" type="ArtworkType"> 
       <xs:unique name="uniqueRef"> 
        <xs:selector xpath="artwork"/> 
        <xs:field xpath="@ref"/> 
       </xs:unique> 
      </xs:element> 
     </xs:sequence> 
    </xs:complexType> 
</xs:element> 
<xs:complexType name="ArtworkType"> 
    <xs:sequence> 
     <xs:element name="title" type="xs:string"/> 
    </xs:sequence> 
    <xs:attribute name="ref" type="xs:nonNegativeInteger"/> 
</xs:complexType> 
</xs:schema> 

Ve bu benim XML dosyasıdır:

<?xml version="1.0" encoding="utf-8" standalone="yes"?> 
<artworks 
xmlns="http://www.fourthwish.co.uk/data/Artworks.xsd" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://www.fourthwish.co.uk/data/Artworks.xsd Artworks.xsd" 
> 
<artwork ref="1"> 
    <title>Title String</title> 
</artwork> 
<artwork ref="1"> 
    <title>Title String</title> 
</artwork> 
</artworks> 

Neden yinelenen ref bir hata alamadım değerler? Arrrggghhh! İnternetteki her şeyi okudum. Lütfen birisine yardım edin.

cevap

3

bunu kullanın:

Uyarı: Eğer Sakson-EE ile bu şemayı çalıştırırsanız

<?xml version="1.0" encoding="utf-8"?> 
<xs:schema id="Artworks" 
xmlns:xs="http://www.w3.org/2001/XMLSchema" 
xmlns:aw="http://www.fourthwish.co.uk/data/Artworks.xsd" 
xmlns="http://www.fourthwish.co.uk/data/Artworks.xsd" 
targetNamespace="http://www.fourthwish.co.uk/data/Artworks.xsd" 
elementFormDefault="qualified" 
> 
    <xs:element name="artworks"> 
    <xs:complexType> 
     <xs:sequence minOccurs="0" maxOccurs="unbounded"> 
     <xs:element name="artwork" type="ArtworkType"/> 
     </xs:sequence> 
    </xs:complexType> 

    <xs:unique name="uniqueRef"> 
     <xs:selector xpath="aw:artwork"/> 
     <xs:field xpath="@ref"/> 
    </xs:unique> 

    </xs:element> 

    <xs:complexType name="ArtworkType"> 
    <xs:sequence> 
     <xs:element name="title" type="xs:string"/> 
    </xs:sequence> 
    <xs:attribute name="ref" type="xs:nonNegativeInteger"/> 
    </xs:complexType> 
</xs:schema> 
1

, o size söyler Test.xsd hattı 13: kompleksi artworkType, yapıtın içinde olduğunu söylemeyi unuttuğunuzu söyleyen {} resimli

adında bir alt öğeye izin vermez. bir ad alanı ve bu nedenle bir önek gerekiyor.

İlgili konular