Exemple-3 : Utiliser des archives ZIP
Des archives ZIP peuvent aussi être chargés et des fichiers se trouvant dans un ZIP peuvent être référencés en utilisant le schéma additional-files. Par exemple :
additional-files:///mybigarchive.zip%7Czip/biginstance.xml
Note : La partie |zip/ doit être échappée par URI en tant que %7Czip/ pour pouvoir se conformer à l'URI RFC puisque le symbole | n'est pas directement autorisé. L'utilisation de motifs glob (* et ?) est aussi autorisée. Vous pouvez donc utiliser quelque chose comme cela pour valider tous les fichiers XML dans l'archive ZIP :
{“command”: “xsi”, “args”: [“additional-files:///mybigarchive.zip%7Czip/*.xml”], “options”: {…}}
Note : 'Content-Disposition: form-data' est aussi valide, outre 'Content-Disposition: attachment'. Puisque plusieurs outils génèrent form-data en tant que disposition de contenu, la valeur form-data est acceptée comme étant valide.
Dans cet exemple, on part du principe que toutes les références de schéma sont des chemins relatifs et que tous les schémas sont contenus dans le zip.
-----PartBoundary Content-Disposition: form-data; name="msg" Content-Type: application/json
{"command": "xsi", "args": ["additional-files:///Demo.zip%7Czip/*.xml"], "options": {}}
-----PartBoundary Content-Disposition: attachment; filename="Demo.zip"; name="additional-files" Content-Type: application/octet-stream
Binary content of Demo.zip archive
-----PartBoundary-- |
Dans cet exemple, les fichiers XML contenus dans un archive ZIP sont validés en utilisant des références à un schéma externe, qui est fourni dans un second archive ZIP.
-----PartBoundary Content-Disposition: form-data; name="msg" Content-Type: application/json
{"command": "xsi", "args": ["additional-files:///Instances.zip%7Czip/*.xml"], "options": {"user-catalog": "additional-files:///Schemas.zip%7Czip/catalog.xml"}}
-----PartBoundary Content-Disposition: attachment; filename="Instances.zip"; name="additional-files" Content-Type: application/octet-stream
Binary content of Instances.zip archive
-----PartBoundary Content-Disposition: attachment; filename="Schemas.zip"; name="additional-files" Content-Type: application/octet-stream
Binary content of Schemas.zip archive
-----PartBoundary-- |