Validité du Document XML
Si une signature XML est intégrée dans le document XML, un élément Signature dans l'espace de noms http://www.w3.org/2000/09/xmldsig# est ajouté au document XML. Pour que le document reste valide, conformément à un schéma, le schéma doit contenir les déclarations d'élément appropriées. StyleVision intègre des signatures à l’intérieur du document. La signature est dite être Enveloppée. L’élément Signature est créé en tant que dernier élément enfant de l'élément racine (ou document).
Si vous ne souhaitez pas modifier le schéma du document XML, la signature XML peut être créée dans un fichier externe. Pour plus de détails, voir la description des options de placement dans la section Signatures XML.
Ci-dessous, vous trouverez des extraits du Schéma XML qui montrent comment l'élément Signature d'une signature enveloppée peut être permise. Vous pouvez utiliser ces exemples en tant que guides pour modifier vos propres schémas.
Dans la première des deux listes ci-dessous, le Schéma de signatures XML est importé dans le schéma de l'utilisateur. Le schéma de signature XML est situé à l’adresse web : http://www.w3.org/TR/xmldsig-core/xmldsig-core-schema.xsd
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xsig="http://www.w3.org/2000/09/xmldsig#"
elementFormDefault="qualified"
attributeFormDefault="unqualified">
<xs:import namespace="http://www.w3.org/2000/09/xmldsig#"
schemaLocation="http://www.w3.org/TR/xmldsig-core/xmldsig-core-schema.xsd"/>
<xs:element name="Root">
<xs:complexType>
<xs:sequence>
<xs:element ref="FirstChildOfRoot"/>
<xs:element ref="SecondChildOfRoot" minOccurs="0"/>
<xs:element ref="ThirdChildOfRoot" minOccurs="0"/>
<xs:element ref="xsig:Signature" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
...
</xs:schema>
Une seconde option (liste ci-dessous) est d'ajouter un élément de caractère générique général qui fait correspondre tout élément depuis d'autres espaces de noms. Définir l'attribut processContents sur lax fait sauter le validateur sur cet élément —, parce qu'aucune déclaration correspondante de l'élément n'a été trouvée. Par conséquent, l'utilisateur n'a pas besoin de référencer le schéma de Signatures XML. L'inconvénient de cette option, néanmoins, est que tout élément (pas seulement l'élément Signature) peut être ajouté à l'emplacement spécifique dans le document XML sans invalider le document XML.
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified"
attributeFormDefault="unqualified">
<xs:element name="Root">
<xs:complexType>
<xs:sequence>
<xs:element ref="selection"/>
<xs:element ref="newsitems" minOccurs="0"/>
<xs:element ref="team" minOccurs="0"/>
<xs:any namespace="##other" minOccurs="0" processContents="lax"/>
</xs:sequence>
</xs:complexType>
</xs:element>
...
</xs:schema>
Spécifications W3C
Pour plus de détails concernant les signatures XML, voir la spécification W3C pour les signatures XML sous http://www.w3.org/TR/xmldsig-core/.