Permalänk
Medlem

Problem med ett XML Schema

Har följande XML-fil:

<?xml version="1.0" encoding="UTF-8"?> <boksamling> <bok isbn="0130282294"> <titel>XML Content and Data</titel> <forfattare> <namn> <fornamn>Kelly</fornamn> <efternamn>Carey</efternamn> </namn> </forfattare> <forfattare> <namn> <fornamn>Stanko</fornamn> <efternamn>Blatnik</efternamn> </namn> </forfattare> <antalSidor>408</antalSidor> <pris valuta="sek">410</pris> <forlag>Prentic-Hall</forlag> <utgivningsar>2002</utgivningsar> <omslag>paperback</omslag> </bok> </boksamling>

och följande XML Schema:

<?xml version="1.0" encoding="UTF-8"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xsd:element name="boksamling"> <xsd:complexType> <xsd:sequence> <xsd:element name="bok" type="bokType" maxOccurs="100" /> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:complexType name="bokType"> <xsd:sequence> <xsd:element name="titel" /> <xsd:element name="forfattare" maxOccurs="4" /> <xsd:element name="namn" type="namnType" /> <xsd:element name="antalSidor" type="xsd:integer" /> <xsd:element name="forlag" type="xsd:string" /> <xsd:element name="utgivningsar" type="xsd:integer" /> <xsd:element name="omslag" /> </xsd:sequence> <xsd:attribute name="isbn" use="required"> <xsd:simpleType> <xsd:restriction base="xsd:positiveInteger"> <xsd:pattern value="\d{10}"/> </xsd:restriction> </xsd:simpleType> </xsd:attribute> </xsd:complexType> <xsd:complexType name="namnType"> <xsd:sequence> <xsd:element name="fornamn" type="xsd:string" /> <xsd:element name="efternamn" type="xsd:string" /> </xsd:sequence> </xsd:complexType> </xsd:schema>

När jag försöker validera dessa så får jag följande felmeddelande: "Element antalSidor: This element is not expected. Expected is (namn)". Har letat länge efter en förklaring men inte hittat någon som förklarar mer än så. Så jag skulle behöva hjälp för att komma vidare.

Permalänk
Medlem
Skrivet av coka:

Har följande XML-fil:

[kod ... ]

När jag försöker validera dessa så får jag följande felmeddelande: "Element antalSidor: This element is not expected. Expected is (namn)". Har letat länge efter en förklaring men inte hittat någon som förklarar mer än så. Så jag skulle behöva hjälp för att komma vidare.

Exakt samma problem som du hade med din DTD: du har angett att en bok ska ha ett namn.

Visa signatur

Kom-pa-TI-bilitet

Permalänk
Medlem
Skrivet av coka:

Har följande XML-fil:

<?xml version="1.0" encoding="UTF-8"?> <boksamling> <bok isbn="0130282294"> <titel>XML Content and Data</titel> <forfattare> <namn> <fornamn>Kelly</fornamn> <efternamn>Carey</efternamn> </namn> </forfattare> <forfattare> <namn> <fornamn>Stanko</fornamn> <efternamn>Blatnik</efternamn> </namn> </forfattare> <antalSidor>408</antalSidor> <pris valuta="sek">410</pris> <forlag>Prentic-Hall</forlag> <utgivningsar>2002</utgivningsar> <omslag>paperback</omslag> </bok> </boksamling>

och följande XML Schema:

<?xml version="1.0" encoding="UTF-8"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xsd:element name="boksamling"> <xsd:complexType> <xsd:sequence> <xsd:element name="bok" type="bokType" maxOccurs="100" /> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:complexType name="bokType"> <xsd:sequence> <xsd:element name="titel" /> <xsd:element name="forfattare" maxOccurs="4" /> <xsd:element name="namn" type="namnType" /> <xsd:element name="antalSidor" type="xsd:integer" /> <xsd:element name="forlag" type="xsd:string" /> <xsd:element name="utgivningsar" type="xsd:integer" /> <xsd:element name="omslag" /> </xsd:sequence> <xsd:attribute name="isbn" use="required"> <xsd:simpleType> <xsd:restriction base="xsd:positiveInteger"> <xsd:pattern value="\d{10}"/> </xsd:restriction> </xsd:simpleType> </xsd:attribute> </xsd:complexType> <xsd:complexType name="namnType"> <xsd:sequence> <xsd:element name="fornamn" type="xsd:string" /> <xsd:element name="efternamn" type="xsd:string" /> </xsd:sequence> </xsd:complexType> </xsd:schema>

När jag försöker validera dessa så får jag följande felmeddelande: "Element antalSidor: This element is not expected. Expected is (namn)". Har letat länge efter en förklaring men inte hittat någon som förklarar mer än så. Så jag skulle behöva hjälp för att komma vidare.

Elementet "namn" är obligatoriskt i elementet "bok" och ska komma mellan "forfattare" och "antalSidor". Om du vill att det ska vara frivilligt sätter du minOccurs="0". Jag rekommenderar också att du indenterar ditt schema för bättre läsbarhet.

Du verkar också sakna typ för elementet "forfattare". Jag gissar att den ska vara komplex och innehålla elementet "namn". Vidare ser jag ingen koppling mellan attributet "isbn" och elementet bok.

Om du vill att din boksamling ska kunna innehålla obegränsat med böcker (och inte bara 100) kan du använda maxOccurs="unbounded".