Click here to Skip to main content
15,884,298 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
Hi,
I have a problem with XML validation. The XSD schema is not to this xml, but validation is true? What is wrong in XSD?

XSD:
XML
<?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="http://winuel.com.pl/2007/pwi/documents" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="Dokument">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="Naglowek">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="typDokumentu" type="xs:string" />
              <xs:element name="numerDokumentu" type="xs:string"  />
              <xs:element name="dataDokumentu" type="xs:dateTime"  />
              <xs:element name="nazwaSprzedawcy" type="xs:string"  />
              <xs:element name="kodSprzedawcy" type="xs:string"  />
              <xs:element name="kodMDD" type="xs:string" />
              <xs:element name="kodURB" type="xs:string" />
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element name="Tresc">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="Liczniki">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element maxOccurs="unbounded" name="DaneLicznika">
                      <xs:complexType>
                        <xs:sequence>
                          <xs:element name="kodPPE" type="xs:string" />
                          <xs:element name="nrLicznika" type="xs:unsignedInt" />
                          <xs:element name="Wskazania">
                            <xs:complexType>
                              <xs:sequence>
                                <xs:element maxOccurs="unbounded" minOccurs="1" name="Wskazanie">
                                  <xs:complexType>
                                    <xs:sequence>
                                      <xs:element name="okresRozliczeniowyOd" type="xs:date" />
                                      <xs:element name="okresRozliczeniowyDo" type="xs:date" />
                                      <xs:element name="strefa" type="xs:string" />
                                      <xs:element name="WF" type="xs:string" minOccurs="1" />
                                      <xs:element name="wskazaniePoprzednie" type="xs:decimal" />
                                      <xs:element name="wskazanieBiezace" type="xs:decimal" />
                                      <xs:element name="mnozna" type="xs:decimal" />
                                      <xs:element name="zuzycie_Pmax" type="xs:decimal" />
                                      <xs:element name="strataProcent" type="xs:decimal" />
                                      <xs:element name="zuzycieZUwzglednieniemStrat" type="xs:decimal" />
                                      <xs:element name="rozklad" type="xs:string" />
                                      <xs:element name="kodOT" type="xs:string" />
                                    </xs:sequence>
                                  </xs:complexType>
                                </xs:element>
                              </xs:sequence>
                            </xs:complexType>
                          </xs:element>
                        </xs:sequence>
                      </xs:complexType>
                    </xs:element>
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>


XML:

XML
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Dokument xmlns:ns2="http://winuel.com.pl/2007/pwi/documents">
    <ns2:Naglowek>
        <ns2:numerDokumentu>dssdsdsdsdsdsdsd</ns2:numerDokumentu>
        <ns2:dataDokumentu>2012-11-07T10:42:47.704+01:00</ns2:dataDokumentu>
        <ns2:nazwaSprzedawcy>aaa</ns2:nazwaSprzedawcy>
        <ns2:kodSprzedawcy>bbbb</ns2:kodSprzedawcy>
        <ns2:kodURB>cccc</ns2:kodURB>
        <ns2:kodMB>rrrr333</ns2:kodMB>
        <ns2:aaa></ns2:aaa>
    </ns2:Naglowek>
    <ns2:Tresc>
        <ns2:Liczniki>
            <ns2:DaneLicznika>
                <ns2:kodPPE>PL_ZEBB_0000000_09</ns2:kodPPE>
                <ns2:nrLicznika>13139609</ns2:nrLicznika>
                <ns2:rolaLicznika>R</ns2:rolaLicznika>
                <ns2:Wskazania>
                    <ns2:Wskazanie>
                        <ns2:okresRozliczeniowyOd>2012-09-20T11:52:00+02:00</ns2:okresRozliczeniowyOd>
                        <ns2:okresRozliczeniowyDo>2012-10-22T14:12:00+02:00</ns2:okresRozliczeniowyDo>
                        <ns2:strefa>poza szczytem</ns2:strefa>
                        <ns2:wskazaniePoprzednie>136821</ns2:wskazaniePoprzednie>
                        <ns2:wskazanieBiezace>138696</ns2:wskazanieBiezace>
                        <ns2:mnozna>1</ns2:mnozna>
                        <ns2:zuzycie>1875</ns2:zuzycie>
                        <ns2:strataProcent>0</ns2:strataProcent>
                        <ns2:zuzycieZUwzglednieniemStrat>1875</ns2:zuzycieZUwzglednieniemStrat>
                        <ns2:kierunek>Pobór</ns2:kierunek>
                        <ns2:pochodzenie>F</ns2:pochodzenie>
                        <ns2:informacjeDodatkowe></ns2:informacjeDodatkowe>
                    </ns2:Wskazanie>
                    <ns2:Wskazanie>
                        <ns2:okresRozliczeniowyOd>2012-09-20T11:52:00+02:00</ns2:okresRozliczeniowyOd>
                        <ns2:okresRozliczeniowyDo>2012-10-22T14:12:00+02:00</ns2:okresRozliczeniowyDo>
                        <ns2:strefa>szczyt</ns2:strefa>
                        <ns2:wskazaniePoprzednie>39089</ns2:wskazaniePoprzednie>
                        <ns2:wskazanieBiezace>39724</ns2:wskazanieBiezace>
                        <ns2:mnozna>1</ns2:mnozna>
                        <ns2:zuzycie>635</ns2:zuzycie>
                        <ns2:strataProcent>0</ns2:strataProcent>
                        <ns2:zuzycieZUwzglednieniemStrat>635</ns2:zuzycieZUwzglednieniemStrat>
                        <ns2:kierunek>Pobór</ns2:kierunek>
                        <ns2:pochodzenie>F</ns2:pochodzenie>
                        <ns2:informacjeDodatkowe></ns2:informacjeDodatkowe>
                    </ns2:Wskazanie>
                </ns2:Wskazania>
            </ns2:DaneLicznika>
            <ns2:DaneLicznika>
                <ns2:kodPPE>PL_ZEBB_sasswe3232_09</ns2:kodPPE>
                <ns2:nrLicznika>425.0003441</ns2:nrLicznika>
                <ns2:rolaLicznika>R</ns2:rolaLicznika>
                <ns2:Wskazania>
                    <ns2:Wskazanie>
                        <ns2:okresRozliczeniowyOd>2012-10-01T00:00:00+02:00</ns2:okresRozliczeniowyOd>
                        <ns2:okresRozliczeniowyDo>2012-11-01T00:00:00+01:00</ns2:okresRozliczeniowyDo>
                        <ns2:strefa>Cala doba</ns2:strefa>
                        <ns2:wskazaniePoprzednie>4975.253</ns2:wskazaniePoprzednie>
                        <ns2:wskazanieBiezace>5331.803</ns2:wskazanieBiezace>
                        <ns2:mnozna>100</ns2:mnozna>
                        <ns2:zuzycie>35655.000</ns2:zuzycie>
                        <ns2:strataProcent>0</ns2:strataProcent>
                        <ns2:zuzycieZUwzglednieniemStrat>35655</ns2:zuzycieZUwzglednieniemStrat>
                        <ns2:kierunek>Pobór</ns2:kierunek>
                        <ns2:pochodzenie>Z</ns2:pochodzenie>
                        <ns2:informacjeDodatkowe></ns2:informacjeDodatkowe>
                    </ns2:Wskazanie>
                </ns2:Wskazania>
            </ns2:DaneLicznika>
            <ns2:DaneLicznika>
                <ns2:kodPPE>PL_ZEBB_dsdsdsdsd22_01</ns2:kodPPE>
                <ns2:nrLicznika>13710068</ns2:nrLicznika>
                <ns2:rolaLicznika>R</ns2:rolaLicznika>
                <ns2:Wskazania>
                    <ns2:Wskazanie>
                        <ns2:okresRozliczeniowyOd>2012-10-01T00:00:00+02:00</ns2:okresRozliczeniowyOd>
                        <ns2:okresRozliczeniowyDo>2012-11-01T00:00:00+01:00</ns2:okresRozliczeniowyDo>
                        <ns2:strefa>Cala doba</ns2:strefa>
                        <ns2:wskazaniePoprzednie>3192.4820</ns2:wskazaniePoprzednie>
                        <ns2:wskazanieBiezace>3239.5850</ns2:wskazanieBiezace>
                        <ns2:mnozna>60</ns2:mnozna>
                        <ns2:zuzycie>2826.18</ns2:zuzycie>
                        <ns2:strataProcent>0</ns2:strataProcent>
                        <ns2:zuzycieZUwzglednieniemStrat>2826.18</ns2:zuzycieZUwzglednieniemStrat>
                        <ns2:kierunek>Pobór</ns2:kierunek>
                        <ns2:pochodzenie>Z</ns2:pochodzenie>
                        <ns2:informacjeDodatkowe></ns2:informacjeDodatkowe>
                    </ns2:Wskazanie>
                </ns2:Wskazania>
            </ns2:DaneLicznika>
        </ns2:Liczniki>
    </ns2:Tresc>
</Dokument>


Validation in c#:

C#
private static bool checkXmlSchema(string XSDFILEPATH, string path, ref string error)
       {
           try
           {

               //xsd localization
             //   XSDFILEPATH = "aaa.xsd";
               //xml localization
              //  path = "bbb.xml";
               XmlDocument document = new XmlDocument();
               document.Load(path);

               XmlReaderSettings settings = new XmlReaderSettings();
               settings.Schemas.Add(null, XSDFILEPATH);
               settings.ValidationType = ValidationType.Schema;

               XmlReader rdr = XmlReader.Create(new StringReader(document.InnerXml), settings);
               while (rdr.Read()) { }
               //zwroc format xml'a
               return true;
           }
           catch (Exception ex)
           {
               //zwróc błąd parsowania xml'a
               error = ex.Message;
               return false;
           }
       }

Thanks in advance for the answer.
Posted
Updated 13-Dec-12 23:20pm
v2
Comments
Menon Santosh 14-Dec-12 5:57am    
There should be reference of xsd file in xml

1 solution

 
Share this answer
 
Comments
rossi105 14-Dec-12 6:25am    
For me it doesn't work. In XSD schema I have "WF" element required and
xml doesn't contains this element and validation is still true, what is wrong?

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900