Altova StyleVision 2024 Enterprise Edition

Wenn eine XML-Signatur in das XML-Dokument eingebettet wird, so wird ein Signature Element aus dem Namespace http://www.w3.org/2000/09/xmldsig# zum XML-Dokument hinzugefügt. Damit das Dokument dem Schema gemäß gültig bleibt, muss das Schema die entsprechenden Elementdeklarationen enthalten.StyleVision bettet Signaturen in das Dokument ein. Die Signatur wird als Enveloped bezeichnet. Das Element Signature wird als das letzte Child-Element des Root (Dokument)-Elements erstellt.

 

Wenn Sie das Schema des XML-Dokuments nicht ändern möchten, kann die XML-Signatur in einer externen Datei erstellt werden. Nähere Informationen dazu finden Sie in der Beschreibung zu den Platzierungsoptionen im Abschnitt XML-Signatureinstellungen.

 

Unterhalb sehen Sie Auszüge aus XML-Schemas, in denen gezeigt wird, wie das Signature Element einer "enveloped" Signatur verwendet werden darf.Sie können diese Beispiele als Richtlinien für die Anpassung Ihrer eigenen Schemas verwenden.

 

In ersten der beiden Beispiele unten wird das XML-Signaturschema in das Benutzerschema importiert. Das XML-Signatur-Schema befindet sich unter der Internetadresse: 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>

 

Die zweite Option (Beispiel unten) ist, ein allgemeines Wildcard-Element hinzuzufügen, das jedes Element aus anderen Namespaces repräsentieren kann. Wenn Sie das Attribut processContents auf lax setzen, überspringt der Validator dieses Element, da keine übereinstimmende Elementdeklaration gefunden wird. Folglich muss der Benutzer das XML-Signatur-Schema nicht referenzieren. Der Nachteil diese Option ist allerdings, dass an der angegebenen Stelle im XML-Dokument jedes beliebige Element (und nicht nur das Element Signature) hinzugefügt werden kann, ohne dass das XML-Dokument ungültig wird.

 

<?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>

 

 

W3C-Spezifikation

Nähere Informationen zu XML-Signaturen finden Sie in der W3C-Spezifikation zu XML-Signaturen unter http://www.w3.org/TR/xmldsig-core/.

© 2017-2023 Altova GmbH