Forum Delphi.cz

Delphi => Obecné => Téma založeno: František 09-08-2021, 02:11:34

Název: XSD validacia so zoznamom err
Přispěvatel: František 09-08-2021, 02:11:34
potrebujem z validovat XML cez XSD, len mi to na prvej chybe konci
ale potrebujem zoznam vsetkych nezrovnalosti,
chyby mozu nastat len v nedodrzani formatov vystunych parametrov, nie v strukture
Název: Re:XSD validacia so zoznamom err
Přispěvatel: pf1957 09-08-2021, 09:18:04
Nevim, jestli rozumim dotazu a jestli chces validaci delat v ramci vlastni aplikace a ten seznam nedostatku potrebujes do ni, nebo te jen pro potreby vyvoje zajima, co je spatne. Pouzival jsem nejaky on-line validator - mam dojem, ze https://www.xmlvalidation.com/ (https://www.xmlvalidation.com/), ale je dost mozne, ze to byla Altova, kterou jsme meli kdysi v drevnich dobach koupenou - HOSIP
Název: Re:XSD validacia so zoznamom err
Přispěvatel: František 09-08-2021, 09:44:42
potrebujem to do aplikacie
validovat cely dokument a zobrazit zoznam chybnych hodnot - ako som spominal struktura je v poriadku - ale obsah sa moze vyskytnut neuplny - nap. xsd ma typ so striktnou dlzkov jednej hodnoty - ale mozem tam zapisat kratsiu.. a to potrebujem pri validacii zachytit a dat do zoznamu chyb
Název: Re:XSD validacia so zoznamom err
Přispěvatel: pf1957 09-08-2021, 10:42:58
potrebujem to do aplikacie
validovat cely dokument a zobrazit zoznam chybnych hodnot - ako som spominal struktura je v poriadku - ale obsah sa moze vyskytnut neuplny - nap. xsd ma typ so striktnou dlzkov jednej hodnoty - ale mozem tam zapisat kratsiu.. a to potrebujem pri validacii zachytit a dat do zoznamu chyb
Tak s tim jsem nikdy nic nedelal a prima podpora v Delphi asi nebude...

Nicmene MSXML parser poskytuje rozhrani IXMLDOMDocument3 s metodou validateNode viz https://documentation.help/MSXML-5.0-SDK/xml_mth_sz_7bz9.htm (https://documentation.help/MSXML-5.0-SDK/xml_mth_sz_7bz9.htm). Je tam  i nejaky example, kde elementy postupne prochazi, takze nejaky seznam chyb se da asi vyloudit.
Název: Re:XSD validacia so zoznamom err
Přispěvatel: František 09-08-2021, 12:53:02
vdaka pf , dobre nasmerovanie ako vzdy

napladla ma este otazka

validovat to uz pri vytvarani XML alebo az ked je komplet vytvoreny
Název: Re:XSD validacia so zoznamom err
Přispěvatel: pf1957 09-08-2021, 13:32:11
validovat to uz pri vytvarani XML alebo az ked je komplet vytvoreny
Jestli pouzijes tu metodu validateNode, tak to muzes (si myslim - nevim) delat hned, jakmile sestavis prislusny fragment DOM tj. napr. po pridani/zeditovani uzlu. A nakonec asi jako celek po Save nebo tak neco.
Název: Re:XSD validacia so zoznamom err
Přispěvatel: Palino 10-08-2021, 09:32:48
Ja pouzivam nieco taketo. Vracia to string chyb. Ak je prazdny je validacia OK.

function CheckSchema(const formFile: string; const schemaFile: string): string;
var
  xml, xsd: IXMLDOMDocument2;
  cache: IXMLDOMSchemaCollection;
  err: Boolean;
  schemas: IXMLDOMSchemaCollection;
begin

  xml := CoDOMDocument60.Create;
  xml.load(formFile);
  schemas := xml.namespaces;

  xsd := CoDOMDocument60.Create;
  xsd.Async := False;
  xsd.load( schemaFile );

  cache := CoXMLSchemaCache60.Create;
  cache.add(schemas.namespaceURI[0], xsd);

  xml := CoDOMDocument60.Create;
  xml.async := False;
  xml.schemas := cache;
  xml.validateOnParse := True;
  xml.resolveExternals := True;

  err := xml.load(formFile);
  if not err then
    result := XMLDOMParseErrorToStringUnit.TXMLDOMParseErrorToString.ToString ( xml.parseError )
  else
    result := '';
end;
Název: Re:XSD validacia so zoznamom err
Přispěvatel: František 10-08-2021, 10:07:23
palino parada
ale co tymto, nemam to, nasiel som nieco na Githube ale mohol by si mi to upresnit?

XMLDOMParseErrorToStringUnit.TXMLDOMParseErrorToString.ToString

ak sa da, uved aj unity k tomu
Název: Re:XSD validacia so zoznamom err
Přispěvatel: František 10-08-2021, 11:12:42
https://github.com/VSoftTechnologies/DUnit-XML/tree/master/Xsd/ValidateXmlWithXsd (https://github.com/VSoftTechnologies/DUnit-XML/tree/master/Xsd/ValidateXmlWithXsd)
doplneneim tychto rutin som to rozbehal

ale vystupom je len posledna chyba
tak kde je chyba?
Název: Re:XSD validacia so zoznamom err
Přispěvatel: František 10-08-2021, 11:59:51
nasiel som to
Kód: Delphi [Vybrat]
  1. XmlDocument.setProperty('MultipleErrorMessages',true);
Název: Re:XSD validacia so zoznamom err
Přispěvatel: František 10-08-2021, 14:38:57
aby som to este upresnil co som nakoniec pouzil

https://wiert.me/2010/01/19/validate-xml-with-xsd-in-net-and-native-msxml-big-difference-in-string-maxlength-validation-and-newlines-samples-in-c-and-delphi/ (https://wiert.me/2010/01/19/validate-xml-with-xsd-in-net-and-native-msxml-big-difference-in-string-maxlength-validation-and-newlines-samples-in-c-and-delphi/)

s doplneneim
Kód: Delphi [Vybrat]
  1. XmlDocument.setProperty('MultipleErrorMessages',true);