pandeis
pandeis

Reputation: 407

How to create xsd for repeating elemets in XML

I have below xml. I need to create xsd for this.

<Request>
<namelist message="hello">
 <name date="">one</name>
 <name date="">two</name>
</namelist>
</Request>

"name" element is repeating based on number of names in the database. There are no count limit for "name" element. Please help me to create xsd for this.

Upvotes: 1

Views: 281

Answers (2)

pandeis
pandeis

Reputation: 407

I have found to generate the XSD using complex type. Below is my correct xsd.

<?xml version="1.0" encoding="utf-8"?><xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="Request" type="RequestType"/>
<xsd:complexType name="RequestType">
    <xsd:sequence>
        <xsd:element name="namelist" type="nameType"></xsd:element>
    </xsd:sequence>

</xsd:complexType>

<xsd:complexType name="nameType">
    <xsd:sequence>
        <xsd:element maxOccurs="unbounded" name="name">
            <xsd:complexType>
                <xsd:simpleContent>
                    <xsd:extension base="xsd:string">
                        <xsd:attribute name="date" type="xsd:date" use="required" />
                    </xsd:extension>
                </xsd:simpleContent>
            </xsd:complexType>
        </xsd:element>
    </xsd:sequence>
    <xsd:attribute name="message" type="xsd:string"/>
</xsd:complexType>

JAXB classes generating from this xsd is easy to use.

Upvotes: 1

Naveen Kumar Alone
Naveen Kumar Alone

Reputation: 7668

This is an XSD for your XML file.

<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="Request">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="namelist">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="name" maxOccurs="unbounded" minOccurs="0">
                <xs:complexType>
                  <xs:simpleContent>
                    <xs:extension base="xs:string">
                      <xs:attribute type="xs:string" name="date" use="optional"/>
                    </xs:extension>
                  </xs:simpleContent>
                </xs:complexType>
              </xs:element>
            </xs:sequence>
            <xs:attribute type="xs:string" name="message"/>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

You can enter your XML to generate XSD by this website

Upvotes: 1

Related Questions