views:

34

answers:

1

Hello. XML:

<?xml version="1.0" encoding="UTF-8"?>
<data>
    <ac code="JL" auto="1">
        <fee>10e</fee>
        <comission>
            <if country="JP">5%</if>
            <else>7%</else>
        </comission>
    </ac>
    <ac code="B2" auto="1">
        <fee>
            <if country="RU">35e 50e 50e 80e 15e 10e</if>
            <else>10e</else>
        </fee>
        <comission>
            <if country="RU">3%</if>
            <else>5%</else>
        </comission>
    </ac>
</data>

And XSD Schema:

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"&gt;

 <xs:element name="data" type="data"/>
 <xs:complexType name="data">
  <xs:sequence>
   <xs:element name="ac" minOccurs="0" maxOccurs="unbounded" type="ac"/>
  </xs:sequence>
 </xs:complexType>

 <xs:complexType name="ac">
  <xs:sequence>
   <xs:element name="fee" type="feecomiss"/>
   <xs:element name="comission" type="feecomiss"/>
  </xs:sequence>
  <xs:attribute name="code" type="xs:string"/>
  <xs:attribute name="auto" type="xs:decimal"/>
 </xs:complexType>

 <xs:complexType name="feecomiss">
  <xs:sequence>
   <xs:element name="if" type="if" minOccurs="0" />
   <xs:element name="else" type="xs:string" minOccurs="0"/>
  </xs:sequence>
 </xs:complexType>

 <xs:complexType name="if">
 <xs:simpleContent>
  <xs:extension base="xs:string">
   <xs:attribute name="country" type="xs:string" use="optional"/>
  </xs:extension>
 </xs:simpleContent>
</xs:complexType>      

</xs:schema>

This scheme is not working because of the fact that the first element of the "fee" has no elements "if" and "else"

Any ideas? Sorry for bad english =)

+1  A: 

I think your schema should look like this:

<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema"&gt;
<xs:element name="data">
<xs:complexType>
  <xs:sequence>
    <xs:element maxOccurs="unbounded" name="ac">
      <xs:complexType>
        <xs:sequence>
          <xs:element name="fee">
            <xs:complexType mixed="true">
              <xs:sequence minOccurs="0">
                <xs:element name="if">
                  <xs:complexType>
                    <xs:simpleContent>
                      <xs:extension base="xs:string">
                        <xs:attribute name="country" type="xs:string" use="required" />
                      </xs:extension>
                    </xs:simpleContent>
                  </xs:complexType>
                </xs:element>
                <xs:element name="else" type="xs:string" />
              </xs:sequence>
            </xs:complexType>
          </xs:element>

          <xs:element name="comission">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="if">
                  <xs:complexType>
                    <xs:simpleContent>
                      <xs:extension base="xs:string">
                        <xs:attribute name="country" type="xs:string" use="required" />
                      </xs:extension>
                    </xs:simpleContent>
                  </xs:complexType>
                </xs:element>
                <xs:element name="else" type="xs:string" />
              </xs:sequence>
            </xs:complexType>
          </xs:element>
        </xs:sequence>
        <xs:attribute name="code" type="xs:string" use="required" />
        <xs:attribute name="auto" type="xs:unsignedByte" use="required" />
      </xs:complexType>
    </xs:element>
  </xs:sequence>
</xs:complexType>

I generated this schema defitinition up to your xml document given in question.
Hope this helps
Myra

Myra
XML document structures must start and end within the same entity.=(
Isis