Formato del archivo de manifiesto XML

Actualizado: septiembre de 2014

El archivo de manifiesto XML describe el contenido del paquete y especifica cómo se asigna el contenido del paquete a una estructura de directorios para cada rol. Por lo general, un archivo que se implementa para un rol determinado resulta necesario en otros roles. El manifiesto en sí en el nuevo formato de paquete permite que el creador incluya el archivo duplicado exactamente una vez y, posteriormente, se describa mediante declaración cómo implementar ese archivo en varios roles. El nuevo formato de paquete simplifica la estructura del archivado y permite que los creadores del paquete optimicen los sistemas de archivado que comparten los archivos entre roles o en un solo rol. Esto da como resultado un tamaño más pequeño de paquete que puede habilitar una implementación más rápida en Windows Azure.

De forma predeterminada, el archivo de manifiesto XML se denomina package.xml. Sin embargo, el manifiesto XML puede ser cualquier archivo en el sistema de archivado siempre que los puntos de la relación entre archivo de manifiesto XML y archivo de manifiesto XML se ajusten al esquema.

Este tema describe el formato del archivo de manifiesto XML mediante ejemplos. Para consultar el esquema del archivo de manifiesto XML, vea Esquema del archivo de manifiesto XML.

El formato XML básico es la siguiente:

<?xml version="1.0" encoding="utf-8"?>
<PackageDefinition xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.microsoft.com/windowsazure">
  <PackageMetaData />
  <PackageContents />
  <PackageLayouts />
</PackageDefinition>

A continuación, se muestra el espacio de nombres XML para el archivo de manifiesto XML:

http://schemas.microsoft.com/windowsazure

El manifiesto XML contiene tres secciones. Cada sección es una colección de recursos con nombre donde todos los nombres son identificadores URI relativos por el uso de la sintaxis "a/b/c...". Para estos nombres hay distinción entre mayúsculas y minúsculas cuando se determina la igualdad y deben cumplir las convenciones normales de codificación y uso de caracteres de escape de los URI. Este tema describe cada una de las tres secciones en el siguiente orden:

La colección de PackageMetaData es un almacén de claves y valores, donde las claves y los valores son cadenas. A continuación se muestra un ejemplo de una colección de PackageMetaData:

<PackageMetaData>
  <KeyValuePair>
    <Key>http://schemas.microsoft.com/windowsazure/ProductVersion/</Key>
    <Value>1.7.30308.2000 </Value>
  </KeyValuePair>
</PackageMetaData>

La suma de bytes UTF-8 que codifican la clave y los valores no debe superar 1 MB. Cualquier procesador de paquetes podría rechazar los procesadores de paquetes con más de 1 MB.

Para evitar conflictos con los espacios de nombres, las claves de metadatos deben ser URI que siguen las mismas convenciones que los espacios de nombres XML.

La colección de PackageContents describe los archivos que componen el paquete. Esto incluye el nombre del archivo, la longitud, un hash opcional sha256 del contenido y la ruta de acceso. A continuación se muestra un ejemplo de una colección de PackageContents:

<PackageContents>
  <ContentDefinition>
    <Name>Content/Example/WithoutHash</Name>
    <ContentDescription>
      <LengthInBytes>123</LengthInBytes>
      <IntegrityCheckHashAlgortihm>None</IntegrityCheckHashAlgortihm>
      <IntegrityCheckHash/>
      <DataStorePath>File00</DataStorePath>
    </ContentDescription>
  </ContentDefinition>
  <ContentDefinition>
    <Name>Content/Example/WithHash</Name>
    <ContentDescription>
      <LengthInBytes>123</LengthInBytes>
      <IntegrityCheckHashAlgortihm>Sha256</IntegrityCheckHashAlgortihm>          <IntegrityCheckHash>AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8=</IntegrityCheckHash>
      <DataStorePath>File01</DataStorePath>
    </ContentDescription>
  </ContentDefinition>
</PackageContents>

Un elemento de contenido es un flujo con nombre de bytes y de recursos de contenido de blobs que pueden ser de tamaño ilimitado. De forma opcional, se puede realizar una comprobación de integridad a este flujo de bytes para comprobar que los bytes se transportaron correctamente sin daños.

Los valores válidos para el elemento IntegrityCheckHashAlgortihm son None y Sha256. Si se especifica None, el elemento de IntegrityCheckHash debe ser el elemento vacío. Para Sha256, la cadena debe ser una codificación de base 64 de bytes hash. Esta cadena debe ser xs:base64Binary de tipo XSD.

Los nombres son URI relativos y distinguen entre mayúsculas y minúsculas. Cada elemento de contenido tiene un elemento DataStorePath, que es un URI relativo el cual hace referencia al flujo de bytes en el sistema de archivado de OPC para ese elemento. El nombre de DataStorePath es arbitrario. Para asegurarse de que los archivos de OPC se pueden desempaquetar y volver a empaquetar fácilmente en diferentes sistemas de archivos, los nombres de los elementos de OPC deben ser EE.UU.-ASCII, además de únicos cuando se comparan sin tener en cuenta las mayúsculas y minúsculas. También se recomienda el uso de nombres cortos para evitar límites en la ruta de acceso al sistema de archivos.

La colección PackageLayouts asigna recursos de contenido a un diseño específico de archivos y directorios en la máquina virtual de Windows Azure. El diseño del archivo incluye las horas de creación y modificación, así como una ruta de acceso relativa. Las rutas de acceso se deben considerar específicas de un sistema de archivos de destino determinado. Puesto que la sintaxis de ruta de acceso depende del sistema operativo, se deben tratar como valores opacos. Dado que los diseños son simplemente una descripción de la asignación, el tamaño de un diseño es proporcional al número de archivos del diseño y no al tamaño del contenido. Esto significa que, en el futuro, los autores de paquetes podrán incluir diseños alternativos; por ejemplo, un diseño con Linux de destino y otro diseño con el sistema operativo Windows de destino y, posteriormente, generar paquetes agnósticos de sistemas operativos. Sin embargo, para Windows Azure SDK 1.7, los paquetes deben cumplir las convenciones de Windows.

La colección PackageLayouts asigna contenidos de paquete a un diseño específico de archivos y directorios en la máquina virtual de Windows Azure. Los diseños de paquete tienen nombre y un paquete puede tener varios diseños de paquete. Cada diseño describe cómo extraer el flujo de bytes de un elemento de contenido de paquetes en un archivo en un sistema de archivos de destino. Cada diseño es una lista de rutas de acceso únicas con las convenciones de nomenclatura del sistema de archivos de destino. Los autores de paquetes pueden incluir diseños alternativos y generar paquetes agnósticos de sistemas operativos. Por ejemplo, un paquete puede incluir un diseño con Linux de destino y un diseño con Windows de destino. El diseño también incluye metadatos datos de archivo, como la creación y modificación de las horas UTC y atributos de solo lectura.

El siguiente ejemplo de una colección PackageLayouts contiene dos diseños, denominados fileCollection1 y fileCollection2. Ambos diseños describen la creación de dos archivos a partir de Content/Example/WithoutHash y Content/Example/WithHash de los recursos del paquete. Sin embargo, asignan contenido a diferentes nombres de archivo. En fileCollection1, los nombres de archivo son únicos en lo que se refiere al uso de mayúsculas y minúsculas. En fileCollection2, los nombres solo difieren en el uso de mayúsculas y minúsculas. Este ejemplo muestra cómo el formato de los paquetes está diseñado para ser agnóstico, pero los autores del paquete que crean diseños de archivo deben tener en cuenta las convenciones del sistema de archivos de destino. El segundo diseño de archivo, fileCollection2, solo se puede extraer en un sistema operativo cuyo sistema de archivos distinga entre mayúsculas y minúsculas. Concretamente, la cadena codificada en el argumento FilePath se trata como una clave opaca que se compara atendiendo a la distinción entre mayúsculas y minúsculas.

<PackageLayouts>
    <LayoutDefinition>
      <Name>fileColletion1</Name>
      <LayoutDescription>
        <FileDefinition>
          <FilePath>Readme.txt</FilePath>
          <FileDescription>
            <DataContentReference>Content/Example/WithoutHash</DataContentReference>
            <CreatedTimeUtc>2012-02-01T01:16:33.9633733Z</CreatedTimeUtc>
            <ModifiedTimeUtc>2012-02-01T01:16:33.9643734Z</ModifiedTimeUtc>
            <ReadOnly>false</ReadOnly>
          </FileDescription>
        </FileDefinition>
        <FileDefinition>
          <FilePath>ReadmeToo.txt</FilePath>
          <FileDescription>
            <DataContentReference>Content/Example/WithHash</DataContentReference>
            <CreatedTimeUtc>2012-02-01T01:16:33.9643734Z</CreatedTimeUtc>
            <ModifiedTimeUtc>2012-02-01T01:16:33.9643734Z</ModifiedTimeUtc>
            <ReadOnly>false</ReadOnly>
          </FileDescription>
        </FileDefinition>
      </LayoutDescription>
    </LayoutDefinition>
    <LayoutDefinition>
      <Name>fileColletion2</Name>
      <LayoutDescription>
        <FileDefinition>
          <FilePath>README</FilePath>
          <FileDescription>
            <DataContentReference>Content/Example/WithoutHash</DataContentReference>
            <CreatedTimeUtc>2012-02-01T01:16:33.9643734Z</CreatedTimeUtc>
            <ModifiedTimeUtc>2012-02-01T01:16:33.9643734Z</ModifiedTimeUtc>
            <ReadOnly>false</ReadOnly>
          </FileDescription>
        </FileDefinition>
        <FileDefinition>
          <FilePath>Readme</FilePath>
          <FileDescription>
            <DataContentReference>Content/Example/WithHash</DataContentReference>
            <CreatedTimeUtc>2012-02-01T01:16:33.9643734Z</CreatedTimeUtc>
            <ModifiedTimeUtc>2012-02-01T01:16:33.9643734Z</ModifiedTimeUtc>
            <ReadOnly>false</ReadOnly>
          </FileDescription>
        </FileDefinition>
      </LayoutDescription>
    </LayoutDefinition>
  </PackageLayouts>

Vea también

Mostrar: