Click here to Skip to main content
11,577,258 members (53,497 online)
Rate this: bad
good
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 13-Dec-12 23:19pm
Edited 13-Dec-12 23:20pm
v2
Comments
Menon Santosh at 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 at 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
0 DamithSL 155
1 Afzaal Ahmad Zeeshan 125
2 OriginalGriff 115
3 Richard MacCutchan 100
4 Abhinav S 90
0 OriginalGriff 820
1 Sergey Alexandrovich Kryukov 676
2 Abhinav S 528
3 F-ES Sitecore 420
4 Suvendu Shekhar Giri 375


Advertise | Privacy | Mobile
Web04 | 2.8.150603.1 | Last Updated 14 Dec 2012
Copyright © CodeProject, 1999-2015
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