Bonjour,
Je cherche à valider mes XML avec un XSD (je débute) pour que mon script en Perl qui lis le XML puisse faire une validation propre des données du XML avant de le traiter.
Cependant, j'ai des XML avec des éléments de ce genre par exemple, avec des actions de plusieurs types (type=blabla) qui prennent des elems/attribs différents suivant l'action sélectionnée :
Est-ce possible de valider cela en XSD ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 <!-- ACTIONS --> <actions> <action type="sftpdownload"> <mandatory>1</mandatory> <file path="/var/tmp/a.txt"/> <file path="/var/tmp/b.txt"/> <file path="/var/tmp/c.txt"/> <server>hostname_here</server> <username>username_here</username> <debug>no</debug> <interval>20</interval> <timelimit>20:00</timelimit> </action> <action type="rename"> <mandatory>1</mandatory> <rename from="a.txt" to="a_new.txt"/> <rename from="b.txt" to="b_new.txt"/> <rename from="c.txt" to="c_new.txt"/> </action> <action type="scpupload"> <mandatory>1</mandatory> <path>a_new.txt</path> <username>username_here</username> <server>hostname_here</server> <remotepath>/tmp</remotepath> <options></options> </action> </actions>
car si je prend un simple exemple du premier (sftpdownload), je peux faire ça :
mais comment faire pour changer ces options suivant le type d'action ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 <!-- ACTION (at least 1) --> <xs:element name="action" minOccurs="1" maxOccurs="unbounded"> <xs:complexType> <xs:sequence> <!-- MANDATORY --> <xs:element type="xs:int" name="mandatory" minOccurs="1" maxOccurs="1"/> <!-- ELEMENTS OF THE ACTION --> <xs:element name="file" maxOccurs="unbounded" minOccurs="1"> <xs:complexType> <xs:attribute type="xs:string" name="path"/> </xs:complexType> </xs:element> <xs:element type="xs:string" name="server"/> <xs:element type="xs:string" name="username"/> <xs:element type="xs:string" name="debug" minOccurs="0" maxOccurs="1"/> <xs:element type="xs:int" name="interval" minOccurs="0" maxOccurs="1"/> <xs:element type="xs:string" name="timelimit" minOccurs="0" maxOccurs="1"/> </xs:sequence> <!-- ACTION TYPE --> <xs:attribute type="xs:string" name="type"></xs:attribute> </xs:complexType> </xs:element>
je précise que les actions ne sont pas toujours les mêmes, j'en ai une 20aine de dispo, et elles peuvent se répéter (je peux avoir plusieurs conditions sftpdownload à la suite par exemple), et certaines sont évidemment facultatives, c'est configuré suivant le besoin
merci de vos lumières !
merci !
Partager