为什么XML对XSD有效? [英] Why XML is valid against XSD?
本文介绍了为什么XML对XSD有效?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我的XML验证有问题。 XSD架构不是这个xml,但验证是真的吗? XSD有什么问题?
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:
<?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#:
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.
Thanks in advance for the answer.
推荐答案
check this article
Simple code to validate an XML file against a schema file (XSD)[^]
check this article
Simple code to validate an XML file against a schema file (XSD)[^]
这篇关于为什么XML对XSD有效?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文