Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Internet (https://www.clubdelphi.com/foros/forumdisplay.php?f=3)
-   -   Validar XML con schema (https://www.clubdelphi.com/foros/showthread.php?t=9560)

rsotolongo 26-04-2004 23:48:36

Validar XML con schema
 
Hola:

Quisiera saber como puedo validar un XML a la hora de cargarlo contra el schema que tiene definido, que lance una excepcion en caso de que config.xml no corresponda con config.xsd o cuando este schema no se pueda encontrar para validarlo

var
XMLConfigurationDoc : IXMLDocument;

begin
...
XMLConfigurationDoc := TXMLDocument.Create(nil);
XMLConfigurationDoc.LoadFromFile('config.xml');
...
end;

jachguate 27-04-2004 00:37:00

Hola.

debiera bastar (aunque no lo he probado) con poner a true los items:

poResolveExternals
poValidateOnParse

de la propiedad ParseOptions del XMLDocument.

Además, el archivo debiera incluir en su xml declaration, la clausula standalone="no", y una linea DOCTYPE (o su equivalente) que lo asocie con el archivo xsd. Para un dtd la línea es:

<!DOCTYPE StockHoldings SYSTEM "sth.dtd">

Hasta luego.

;)

rsotolongo 27-04-2004 03:31:08

Estos consejos fue lo primero que hice antes de enviar el post pero no funciono pues al quitar el xsd del mismo camino del xml, es decir, para que no pudiera encontrarlo, no dio bateo alguno, pense que fuese suficiente pero no fue asi. Por eso es que me decidi a preguntar en el foro, si tienen otra solucion se lo agradeceria.

jachguate 27-04-2004 04:01:59

Para futuras oportunidades, te recomiendo incluir este tipo de información cuando colocas la pregunta, de manera que ni vos ni yo perdamos tiempo por su ausencia. Para entender mi postura, te recomiendo la lectura de este hilo

Hasta luego.

;)

rsotolongo 27-04-2004 04:36:20

Disculpa la omisión entonces, lo cierto es que el elemento standalone es como si no existiera pues sea "yes" o sea "no" no da error alguno, las propiedad ParseOption la inicializo así:

XMLConfigurationDoc := TXMLDocument.Create(nil);
XMLConfigurationDoc.ParseOptions := [poResolveExternals, poValidateOnParse];
XMLConfigurationDoc.LoadFromFile('config.xml');

esta es la estructura general de config.xml:

<?xml version="1.0" encoding="UTF-8"?>
<configuration Version="1.0.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="config.xsd">

...
...
...

</configuration>

y cuando borro config.xsd del mismo origen que config.xml no da problemas alguno, comprendes mejor ahora??? puedes ayudarme???

cisterpe 27-04-2004 10:33:15

Hola estaria interesado en hacer lo mismo pero no encontre ningun ejemplo donde comenzar a trabajar.

Mi aplicacion crea un XML y querria validar su estructura sore los XSD que tambien tengo.

Trabajo sobre Delphi 6 y no se como podria comprobar el archivo xml.

Gracias


La franja horaria es GMT +2. Ahora son las 13:22:21.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi