XSD
Code:
...
<xs:element name="Broj" type="xs:decimal" nillable="false"/>
...
...
<xs:element name="Broj" type="xs:decimal" nillable="false"/>
...
i funkciju u C# koja validira XML
Code:
public void ValidateXML(String XMLfileName, String XSDfileName)
{
...
XmlTextReader reader = new XmlTextReader(XMLfileName);
XmlValidatingReader vreader = new XmlValidatingReader(reader);
XmlSchemaCollection xsc = new XmlSchemaCollection();
xsc.Add(null, XSDfileName);
vreader.Schemas.Add(xsc);
vreader.ValidationEventHandler += new ValidationEventHandler(ValidationCallBack);
while (vreader.Read())
{
}
...
}
private void ValidationCallBack(object sender, ValidationEventArgs args)
{
...
}
public void ValidateXML(String XMLfileName, String XSDfileName)
{
...
XmlTextReader reader = new XmlTextReader(XMLfileName);
XmlValidatingReader vreader = new XmlValidatingReader(reader);
XmlSchemaCollection xsc = new XmlSchemaCollection();
xsc.Add(null, XSDfileName);
vreader.Schemas.Add(xsc);
vreader.ValidationEventHandler += new ValidationEventHandler(ValidationCallBack);
while (vreader.Read())
{
}
...
}
private void ValidationCallBack(object sender, ValidationEventArgs args)
{
...
}
u XMLu koji se validira validacija prođe uspješno ako je format broja 123.45 tj. engleski format broja
međutim meni treba u XMLu da bude naš format broja tj. 123,45
Thred koji poziva funkciju za validaciju je u našoj kulturi tj.
Code:
Thread.CurrentThread.CurrentCulture = new CultureInfo("bs-Latn-BA", true);
ili
Thread.CurrentThread.CurrentCulture = new CultureInfo("sr-Latn-CS", true);
ili
Thread.CurrentThread.CurrentCulture = new CultureInfo("hr-HR", true);
Thread.CurrentThread.CurrentCulture = new CultureInfo("bs-Latn-BA", true);
ili
Thread.CurrentThread.CurrentCulture = new CultureInfo("sr-Latn-CS", true);
ili
Thread.CurrentThread.CurrentCulture = new CultureInfo("hr-HR", true);
ali funkcija vreader.Read() uvjek validira na engleskom tako da validacija broja 123,45 pozove ValidationCallBack pa je uvjek false :(
Kako ovo rešiti?
Da li u funkciji ValidateXML treba nešto izmeniti ili u XSD treba nešto dodati pa da ga na taj način validator interpretira kao brojeve u našoj kulturu?
Hvala unapred