0
votes

I'm working with XML and XSD validating right now, and I'm getting an error from the validator that says

S4s-elt-must-match.1: The Content Of 'Pavedimas' Must Match (annotation?, (simpleType | ComplexType)?, (unique | Key | Keyref)*)). A Problem Was Found Starting At: ComplexType.

I'm just trying to make an attribute out of "Sąskaita", that belong to "Pavedimas".

Here's the XML code:

<?xml version="1.0" encoding="UTF-8"?> 
<?xml-stylesheet type="text/xsl" href="mok.xsl"?>
<Mokėjimai
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:noNamespaceSchemaLocation="mok.xsd">
          <Organizacija> KTU Informatikos fakultetas </Organizacija>
            <Data>2017-05-25</Data>
  <Pavedimas>
<Sąskaita>S009 999</Sąskaita>
<Būsena>Sumokėta</Būsena>
<Gavėjas>
    <Pavadinimas>Mokesčių inspekcija</Pavadinimas>
    <Bankas>Swedbank</Bankas>
    <Sąskaita>9988 7766 55</Sąskaita>
</Gavėjas>
<Suma>
    <Dydis>155.99</Dydis>
    <Valiuta>EUR</Valiuta>
</Suma>
 </Pavedimas>
 <Pavedimas>
<Sąskaita>S009 907</Sąskaita>
<Būsena>Sumokėta</Būsena>
<Gavėjas>
    <Pavadinimas>Manchester Metropolitan University </Pavadinimas>
    <Bankas>Barclays Bank Delaware</Bankas>
    <Sąskaita>9988 7766 55</Sąskaita>
</Gavėjas>
<Suma>
    <Dydis>212.55</Dydis>
    <Valiuta>GBP</Valiuta>
</Suma>
</Pavedimas>
<Pavedimas>
<Sąskaita>S009 966</Sąskaita>
<Būsena>Nesumokėta</Būsena>
<Gavėjas>
    <Pavadinimas>Zygimantas Glodenis</Pavadinimas>
    <Bankas>SEB</Bankas>
    <Sąskaita>LT7045254125638745</Sąskaita>
</Gavėjas>
<Suma>
    <Dydis>10000.00</Dydis>
    <Valiuta>EUR</Valiuta>
</Suma>
 </Pavedimas>
</Mokėjimai>

And here's the XSD:

https://codeshare.io/anlOoX

1
Sąskaita is defined as an attribute on the Pavedimas element, not as an element itself.ophychius
@ophychius because i need it to be xs:attributeErnestas Bendzelauskas

1 Answers

0
votes

The definition of your attribute was in the wrong place. It comes right within the complexType but after the sequence.

also, in your XML currently you have an element and not an attribute, so you still need to fix your XML for it to validate.

Try the following XSD

<?xml version="1.0" encoding="UTF-8"?> 
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:element name="Mokėjimai">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="Organizacija" type="xs:string"/>
                <xs:element name="Data" type="xs:string"/>
                <xs:element name="Pavedimas" minOccurs="0" maxOccurs="unbounded" >
                    <xs:complexType>

                                                  <xs:sequence >
                            <xs:element name="Gavėjas">
                                <xs:complexType>
                                    <xs:sequence >
                                        <xs:element name="Pavadinimas" type="xs:string"/>
                                        <xs:element name="Bankas" type="xs:string"/>
                                        <xs:element name="Sąskaita" type="xs:string" />
                                    </xs:sequence>
                                </xs:complexType>
                            </xs:element>
                            <xs:element name="Suma">
                                <xs:complexType>
                                    <xs:sequence >
                                        <xs:element name="Dydis" type="xs:decimal" />
                                        <xs:element name="Valiuta" type="xs:string" />
                                    </xs:sequence>
                                </xs:complexType>
                            </xs:element>
                        </xs:sequence>
                                               <xs:attribute name="Sąskaita" type="xs:string" />
                    </xs:complexType>
                </xs:element>
            </xs:sequence>  
        </xs:complexType>
    </xs:element>   
</xs:schema>