Click here to Skip to main content
12,079,391 members (27,339 online)
Rate this:
 
Please Sign up or sign in to vote.
See more: C# XML validation xsd
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 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 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#:

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 14-Dec-12 0:19am
Edited 14-Dec-12 0:20am
v2
Comments
Menon Santosh 14-Dec-12 5:57am
   
There should be reference of xsd file in xml

1 solution

Rate this: bad
 
good
Please Sign up or sign in to vote.

Solution 1

  Permalink  
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)

  Print Answers RSS
Top Experts
Last 24hrsThis month


Advertise | Privacy | Mobile
Web04 | 2.8.160212.1 | Last Updated 14 Dec 2012
Copyright © CodeProject, 1999-2016
All Rights Reserved. Terms of Service
Layout: fixed | fluid

CodeProject, 503-250 Ferrand Drive Toronto Ontario, M3C 3G8 Canada +1 416-849-8900 x 100