Altova StyleVision 2023 Enterprise Edition

Si un documento XML tiene incrustada una firma XML, se añade un elemento Signature del espacio de nombres http://www.w3.org/2000/09/xmldsig# al documento XML. Para que el documento no deje de ser válido, el esquema en el que se basa el documento debe contener las declaraciones de elemento correspondientes. StyleVision incrusta firmas dentro del documento. Es lo que denominamos firma envuelta. El elemento Signature se crea como último elemento secundario del elemento raíz (o de documento).

 

Si no quiere modificar el esquema del documento XML, puede crear la firma XML en un archivo distinto. Para más información consulte la descripción de las opciones del cuadro de diálogo Opciones de la firma XML.

 

A continuación ofrecemos algunos fragmentos de esquemas XML que permiten el uso del elemento Signature para firmas envueltas. Puede usar estos ejemplos a la hora de modificar sus esquemas.

 

En el primer ejemplo, el esquema XML Signatures se importa en el esquema del usuario. El esquema XML Signatures está en esta dirección 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>

 

En el segundo ejemplo se añadió un elemento comodín genérico que coincide con cualquier elemento de otros espacios de nombres. Si el atributo processContents tiene el valor lax, el validador ignorará este elemento (porque no encontró ninguna declaración de elemento equivalente). Por consiguiente, el usuario no necesita hacer referencia al esquema XML Signatures. El inconveniente es que se puede añadir cualquier elemento (y no solo el elemento Signature) en la posición del documento XML especificada y el documento XML seguirá siendo válido.

 

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

 

 

Especificación del W3C

Para más información sobre las firmas XML consulte la especificación del W3C en la dirección http://www.w3.org/TR/xmldsig-core/.

 

© 2017-2023 Altova GmbH