Ejemplo: una libreta de direcciones
La carpeta (Mis) Documentos, C:\Documents and Settings\<usuario>\Mis Documentos\Altova\StyleVision2023\StyleVisionExamples\Tutorial\ModularSPS, contiene ejemplos de archivos SPS modulares. Los archivos de ejemplo de esta carpeta forman un proyecto: una libreta de direcciones modular, con contactos personales y de negocios. Este ejemplo no solo muestra los mecanismos utilizados para implementar los módulos, sino que ilustra las ventajas de usarlos.
•La libreta de direcciones está formada por dos módulos: (i) una libreta de direcciones de negocios y (ii) una libreta de direcciones personal. Cada una tiene un archivo SPS con un diseño diferente. En este caso los módulos se utilizan para formar una unidad de mayor tamaño. Los módulos son los componentes de esta unidad.
•Aunque los modelos de contenido de los dos módulos (la libreta de direcciones de negocios y la personal) tienen algunas diferencias, ambos tienen en común el módulo ContactPoints, que incluye los principales datos de contacto: dirección, teléfono, fax y correo electrónico. Por tanto, el módulo ContactPoints puede ser compartido por las dos libretas de direcciones (la de negocios y la personal). En este caso el módulo se utiliza como unidad común compartida por varias unidades.
•Además, se pueden crear más módulos a partir del módulo ContactPoints. Por ejemplo, en el proyecto se creó el módulo Address, que contiene la dirección postal. Esta dirección postal puede tener tres modelos de contenido, dependiendo de si es una dirección de la UE, de EE UU o de otro lugar. El resultado de los tres modelos de contenido se define en un solo diseño SPS. No obstante, podrían tener SPS diferentes. En este caso, el uso de módulos aportaría aún más flexibilidad.
Para describir este proyecto de ejemplo dividimos la información en tres apartados:
Los archivos de esquema
Cuando cree esquemas para archivos SPS modulares, lo más importante es no olvidarse de crear los elementos que quiere reutilizar como elementos globales. El esquema para la libreta de direcciones es AddressBook.xsd. Este esquema se construyó al importar los esquemas para la libreta de direcciones de negocios (BusinessAddressBook.xsd) y la libreta de direcciones personal (PersonalAddressBook.xsd). El esquema BusinessAddressBook.xsd ofrece un modelo de contenido para los contactos de negocios, mientras que el esquema PersonalAddressBook.xsd ofrece un modelo de contenido para los contactos personales (imagen siguiente).
Ambos esquemas importan el esquema ContactPoints.xsd (imagen siguiente), que define un modelo de contenido para los datos de contacto.
Por último, el esquema ContactPoints.xsd (imagen siguiente) incluye el esquema Address.xsd, que define los tres tipos de modelos de contenido para las direcciones: direcciones de la EU, de EE UU y de otros lugares.
Las importaciones se usan cuando el esquema importado pertenece a un espacio de nombres distinto al del esquema de importación. Las inclusiones se usan cuando el esquema incluido pertenece a un espacio de nombres distinto al del esquema de inclusión.
Nota: | las imágenes anteriores muestran el esquema correspondiente en la vista Esquema de Altova XMLSpy. |
Las fuentes de datos XML
Los datos XML están en el archivo AddressBook.xml. Según la estructura de este archivo, el elemento AddressBook contiene los elementos secundarios companies y persons. Los modelos de contenido de estos dos elementos se definen en los archivos de esquema BusinessAddressBook.xsd y PersonalAddressBook.xsd, respectivamente.
Hay dos archivos XML más, que corresponden a los esquemas BusinessAddressBook.xsd y PersonalAddressBook.xsd. Estos dos archivos XML, BusinessAddressBook.xml y PersonalAddressBook.xml, se usan como archivos XML de trabajo de los correspondientes archivos SPS.
Por tanto, los tres archivos XML son los archivos XML de trabajo de estos módulos SPS:
•AddressBook.xml => AddressBook.sps, ContactPoints.sps, Address.sps
•BusinessAddressBook.xml => BusinessAddressBook.sps
•PersonalAddressBook.xml => PersonalAddressBook.sps
Los módulos SPS
Primero empezaremos por describir el módulo más básico del proyecto (Address.sps) y después describiremos todos los módulos que componen la libreta de direcciones (AddressBook.sps). Todos estos módulos SPS usan el esquema AddressBook.xsd.
Address.sps
Lo más importante es saber qué esquema y qué archivo XML de trabajo utiliza.
•El módulo Address.sps utiliza AddressBook.xsd como esquema, pero también podría utilizar Address.xsd, ContactPoints.xsd, BusinessAddressBook.xsd o PersonalAddressBook.xsd porque el elemento Address está presente en todos estos esquemas y estará disponible como elemento global. Cuando el módulo SPS se añade a otro módulo SPS, el esquema del módulo importado se ignora. Es decir, no importa qué esquema se utiliza si el archivo SPS se va a añadir a otro SPS como módulo.
•El archivo XML de trabajo es AddressBook.xml. Observe que la plantilla principal de Address.sps especifica que solo se debe procesar el elemento Address. Además, observe que se definieron plantillas globales para Address-EU, Address-US y Address-Other.
Como solamente se procesa el elemento Address, las vistas previas de los resultados solo muestran el resultado de Address. Cuando Address.sps se usa como módulo, las plantillas globales se añaden y la plantilla principal se ignora.
ContactPoints.sps
Este SPS importa el módulo anterior (Address.sps). Observe el uso de las plantillas globales dentro de otras plantillas y globales y de la plantilla principal.
•El módulo ContactPoints.sps utiliza AddressBook.xsd como esquema y AddressBook.xml como archivo XML de trabajo.
•Address.sps se añade como módulo a ContactPoints.sps, lo cual activa las plantillas globales de los elementos Address-EU, Address-US y Address-Other.
•Se definen las plantillas globales para los elementos ContactPoints y Email. Observe que la definición de ContactPoints utiliza la plantilla global de Email (imagen siguiente).
•La plantilla principal (necesaria para generar la vista previa) utiliza la plantilla global del elemento ContactPoints, lo cual permite obtener una vista previa del resultado de ContactPoints.
BusinessAddressBook.sps y PersonalAddressBook.sps
Estos archivos SPS importan un módulo cada uno, que a su vez importan otro módulo. Observe que la plantilla principal simplemente aplica las plantillas globales.
•Estos dos módulos usan el esquema AddressBook.xsd. Los archivos XML de trabajo de estos dos módulos son BusinessAddressBook.xml y PersonalAddressBook.xml respectivamente.
•El módulo ContactPoints.sps se añade a ambos módulos. Indirectamente se importa también el módulo Address.sps. Todas las plantillas globales de estos dos módulos estarán a disposición del archivo SPS modular de destino.
•En el módulo BusinessAddressBook.sps se definen plantillas globales para los elementos Companies y Company. Observe que la definición de Company utiliza la plantilla global de ContactPoints.
•En el módulo PersonalAddressBook.sps se definen plantillas globales para los elementos Person y Persons. La definición de Person utiliza la plantilla global de ContactPoints.
AddressBook.sps
Hay dos plantillas globales para el elemento Email. Cualquiera de las dos puede activarse.
•El diseño modular de destino AddressBook.sps utiliza el esquema AddressBook.xsd y el archivo de trabajo AddressBook.xml.
•Los módulos BusinessAddressBook.sps y PersonalAddressBook.sps se añaden al SPS modular de destino. Indirectamente se importan también los módulos ContactPoints.sps y Address.sps.
•Para el elemento Email se define una plantilla global. Esto significa que ahora hay dos plantillas globales para el elemento Email, una en el módulo ContactPoints.sps y otra en el módulo AddressBook.sps (imagen siguiente).
•En la lista Plantillas globales de la ventana Estructura del diseño (imagen anterior) puede seleccionar cuál de las dos plantillas globales debe activarse. En StyleVision no puede haber más de dos plantillas globales activas para el mismo elemento. La plantilla que esté activa se usa dentro de la plantilla global ContactPoints.
•La plantilla principal incluye contenido estático para el encabezado de los documentos de salida.