Page 1 of 1

Valid xml and Schema

Posted: Wed Mar 16, 2022 10:01 pm
by Solstice
I need to verify xml is correct and I need help writing my XML Schema.

Code: Select all

<?xml version="1.0 encoding="UTF-8" standalone="yes">
<data-set xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<0>
	<fname>John</fname>
	<lname>Doe</lname>
	<email>doejohn@gmail.com</email>
</0>
<1>
	<fname>Jane</fname>
	<lname>Doe</lname>
	<email>doejane@yahoo.com</email>
</1>

Re: Valid xml and Schema

Posted: Thu Mar 17, 2022 9:26 am
by Radu
Hi,
Something like this <0> is not a valid XML element name, a valid element name starts with a letter or underscore:
https://www.w3schools.com/xml/xml_elements.asp

Also you cannot build an XML schema to validate an XML document which may contain an arbitrary number of tag names, for example <0>, <1>....<1000>.
If your XML would look like this:

Code: Select all

<data-set>
    <person number="0">
        <fname>John</fname>
        <lname>Doe</lname>
        <email>doejohn@gmail.com</email>
    </person>
    <person number="1">
        <fname>Jane</fname>
        <lname>Doe</lname>
        <email>doejane@yahoo.com</email>
    </person>
</data-set>
an XML Schema for it would look like this:

Code: Select all

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
    <xs:element name="data-set">
        <xs:complexType>
           <xs:sequence>
               <xs:element name="person" maxOccurs="unbounded">
                   <xs:complexType>
                       <xs:sequence>
                           <xs:element name="fname" type="xs:string"/>
                           <xs:element name="lname" type="xs:string"/>
                           <xs:element name="email" type="xs:string"/>
                       </xs:sequence>
                       <xs:attribute name="number" type="xs:integer"/>
                   </xs:complexType>
               </xs:element>
           </xs:sequence>
        </xs:complexType>
    </xs:element>
</xs:schema>

Regards,
Radu