Jacek K.

Jacek K. Software Developer,
Telecetera Ltd.

Temat: wersje XML Schema

w mojej app korzystam z walidacji Schema w celu zapewnienia sobie poprawnosci wejsciowego pliku danych, wsyzstko dziala, ale trafily mi sie dwa komputeryna ktorych validacja schema stwierdzila, iz plik XSD jest nie poprawny (konflikt z elementem ANY)
czy jest to mozliwe, ze na tamtych pc byly jakies starsze wersje schema? jezeli tak to jak mam sobie zapewnic kompatibylnosc? co dodac do instalatora?

konto usunięte

Temat: wersje XML Schema

Sławomir Z. edytował(a) ten post dnia 12.09.12 o godzinie 21:19
Jacek K.

Jacek K. Software Developer,
Telecetera Ltd.

Temat: wersje XML Schema

Pisze w BD Delphi 8 for .NET, uzywam takiego kodu:

function TXMLValidator.Waliduj: boolean;
var
reader: XmlTextReader;
val: XmlValidatingReader;
sch: XmlSchemaCollection;
begin
//zeruje rezultaty
ValResult := ArrayList.Create;
ValResultOK := true;

val := nil;
reader := nil;
try
try

//wczytuje dane
reader := XmlTextReader.Create(XmlName);
val := XmlValidatingReader.Create(reader);
sch := XmlSchemaCollection.Create;
sch.Add('', SchemaName);
val.ValidationType := ValidationType.Schema;
val.Schemas.Add(sch);
Include(val.ValidationEventHandler, ev);

//wykonuje walidacje
while (val.Read) do
begin
end;

except
on e:Exception do
begin
ValResult.Add(e.Message);
ValResultOK := false;
end;
end;
finally
//zamykam pliki
if reader <> nil then reader.Close;
if val <> nil then val.Close;
end;

result := ValResultOK;
end;



fragment schema:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">


<xs:complexType name="head">
<xs:annotation>
<xs:documentation>Naglowek pliku.</xs:documentation>
</xs:annotation>
<xs:sequence>

<xs:element name="plas" type="OeS_wsp" minOccurs="0" maxOccurs="1">
<xs:annotation>
<xs:documentation>Punkt plasowania.</xs:documentation>
</xs:annotation>
</xs:element>


<xs:any minOccurs="0" maxOccurs="unbounded" processContents="skip">
<xs:annotation>
<xs:documentation>Jezeli w nowszej wersji pliku danych pojawi sie dodatkowe pole, walidacja pozwoli otworzyc taki pliki - dodatkowe pole/pola zostana pominiete.</xs:documentation>
</xs:annotation>
</xs:any>

</xs:sequence>
</xs:complexType>



</xs:schema>



problem jest (na razie wyskoczyl tylko na 2 komputerach) z nodem plas i anny, w skocie, walidacja wskazuje na niejednoznacznosc tych nodow

konto usunięte

Temat: wersje XML Schema

Sławomir Z. edytował(a) ten post dnia 12.09.12 o godzinie 21:20
Jacek K.

Jacek K. Software Developer,
Telecetera Ltd.

Temat: wersje XML Schema

Sławomir Zimosz:
Moim zdaniem ta schema jest niepoprawna i rację mają czepiające się parsery.

wywal minOccurs z xs:element i zobacz czy przejdzie. Powinno, bo wtedy w ewentualnym dokumencie pierszy plas bedzie mogł wynikać

tylko, ze ja chce miec minOccurs="0" dla "plas" bo dopuszczam brak takiego node'a, a co do parserow, to na 18 z 20 testowanych pc wszystko dziala poprawnie

konto usunięte

Temat: wersje XML Schema

Sławomir Z. edytował(a) ten post dnia 12.09.12 o godzinie 21:21

Następna dyskusja:

Zaproszenie na dwudniowe Wa...




Wyślij zaproszenie do