Click here to Skip to main content
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 14-Dec-12 0:19am
Edited 14-Dec-12 0:20am
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 OriginalGriff 505
1 Maciej Los 325
2 Richard MacCutchan 265
3 Mathew Soji 220
4 BillWoodruff 210
0 OriginalGriff 8,804
1 Sergey Alexandrovich Kryukov 7,457
2 DamithSL 5,689
3 Maciej Los 5,279
4 Manas Bhardwaj 4,986


Advertise | Privacy | Mobile
Web01 | 2.8.1411028.1 | Last Updated 14 Dec 2012
Copyright © CodeProject, 1999-2014
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