PB à toute heure et à tout moment. (à parcourir avec modération)

Le forum (ô combien francophone) des utilisateurs de Powerbuilder.

Recherche rapide

Annonce

Certaines rubriques, dont des cours, sont uniquement visibles par les membres du forum ^^.
Dans la rubrique Liens & Références, vous avez accès à un sommaire de téléchargement, profitez-en !
Il existe maintenant un nouveau TOPIC "Votre CV en Ligne" accessible uniquement par demande.
  • Index
  •  » Powerscripts
  •  » Controler fichier xml avec XMLParseFile et plusieurs xsd

#1 31-07-2013 15:41:17

wazou1812  
Modératrice
Award: bf
Date d'inscription: 24-05-2006
Messages: 610
Pépites: 2,097
Banque: 3,536,631,712,504

Controler fichier xml avec XMLParseFile et plusieurs xsd

Bonjour,

Je voudrais savoir s'il est possible de contrôler la structure et le contenu d'un fichier XML contenant plusieurs fichiers XSD. Le fichier xml commence ainsi :

Code:

<?xml version="1.0" encoding="UTF-8"?>
<OrderResponseList
xmlns="rrn:org.xcbl:schemas/xcbl/v4_0/ordermanagement/v1_0/ordermanagement.xsd" 
xmlns:core="rrn:org.xcbl:schemas/xcbl/v4_0/core/core.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

Bien sur, nous avons à notre disposition l'ensemble des fichiers xsd, et le but étant de controler que le fichier xml respecter bien les contraintes de l'ensemble des xsd auquelles le xml fait référence.


Vos idées sont les bienvenues,


PB version 12.1 build 7000

Hors ligne

 

#2 01-08-2013 07:20:10

seki  
0x73656B69
Award: bf
Lieu: Laquenexy & Luxembourg
Date d'inscription: 20-11-2008
Messages: 1118
Pépites: 4,296,080,204
Banque: 9,223,372,036,854,776,000
Site web

Re: Controler fichier xml avec XMLParseFile et plusieurs xsd

Les fonctions XMLParseFile() et XMLParseString() te permettent de vérifier la validité d'un fichier xml (ou du contenu d'un fichier si le construis ou que tu l'as préalablement lu dans une chaîne).

Je les paramètres namespaceprocessing, schemaprocessing et schemafullchecking permettent ce que tu souhaites : valider le schéma. Si ton fichier est bien formé, peu importe que le schéma soit en plusieurs .xsd qui peuvent s'inclure, ou si il y a des namespaces, la validation traitera le tout.

Ici on valide par exemple des fichiers dont le début est

Code:

<S01 creationDateTime="2013-07-29T11:25:44Z" version="1.0" xsi:schemaLocation="http://www.bcl.lu/2013/S0.1 ../S01.xsd" xmlns="http://www.bcl.lu/2013/S0.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

le schéma étant composé de 3 fichiers datatypes.xsd, S01.xsd et structures.xsd, le point d'entrée du schéma appelant les 2 autres par des includes :

Code:

<xs:schema xmlns="http://www.bcl.lu/2013/S0.1" xmlns:s01="http://www.bcl.lu/2013/S0.1" xmlns:s01dt="http://www.bcl.lu/2013/S0.1/datatypes" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.bcl.lu/2013/S0.1" elementFormDefault="qualified" attributeFormDefault="unqualified" version="1.0">
  <xs:import namespace="http://www.bcl.lu/2013/S0.1/datatypes" schemaLocation="datatypes.xsd"/>
  <xs:include schemaLocation="structures.xsd"/>

Le code PB pour la validation est

Code: PB

li_result = XMLParseString( arg_s_data, ValAlways!, is_last_error, True , True , True )

The best programs are the ones written when the programmer is supposed to be working on something else. - Melinda Varian

Mes réponses PB sur StackOverflow
http://stackoverflow.com/users/flair/317266.png

Hors ligne

 
  • Index
  •  » Powerscripts
  •  » Controler fichier xml avec XMLParseFile et plusieurs xsd

Pied de page des forums

Propulsé par FluxBB 1.2.22