Ejemplo: usar nombres de archivo como parámetros de asignación
En este ejemplo se explica paso a paso cómo ejecutar una asignación que toma parámetros de entrada en tiempo de ejecución. El archivo de diseño de asignación que utilizamos en este ejemplo está en <Documentos>\Altova\MapForce2024\MapForceExamples\FileNamesAsParameters.mfd.
Esta asignación lee datos de un archivo XML de origen y los escribe en un archivo XML de destino. Los datos se escriben en el archivo de destino prácticamente sin cambios (los atributos PrimaryKey y Name se rellenan con valores constantes de la asignación). El objetivo principal de la asignación es permitir que se pueda indicar el nombre de los archivos de entrada y salida como parámetros al ejecutar la asignación.
La asignación utiliza dos componentes de entrada: InputFileName y OutputFileName. Estos componentes aportan el nombre de archivo de entrada (y el nombre de archivo de salida respectivamente) del archivo XML de origen y de destino. Por este motivo, están conectados con el nodo Archivo: <dinámico>. Puede cambiar un componente a este modo haciendo clic en el botón Archivo ( ) y seleccionando Usar nombres de archivo dinámicos dados por la asignación.
![mf_simple_input_03](./images/mf_simple_input_03.png)
FileNamesAsParameters.mfd (MapForce Basic Edition)
Si hace doble clic en la barra del título de uno de los componentes (InputFileName u OutputFileName), puede ver o editar sus propiedades. Por ejemplo, puede indicar el tipo de datos del parámetro de entrada o cambiar el nombre del parámetro de entrada, como se explica en Configurar componentes de entrada simples. En este ejemplo los parámetros de entrada y salida se han configurado así:
•El parámetro InputFileName es de tipo "cadena" y tiene un valor predeterminado dado por una constante definida en la misma asignación. Esa constante es de tipo "cadena" y su valor es "Altova_Hierarchical.xml". Por tanto, al ejecutar la asignación, esta intentará leer datos de un archivo llamado "Altova_Hierarchical.xml", siempre que no indique otro valor como parámetro.
•El parámetro OutputFileName es de tipo "cadena" y su valor predeterminado también viene dado por una constante definida en la misma asignación. Esa constante también es de tipo "cadena" y se llama "Altova_Hierarchical_output.xml", por lo que al ejecutar la asignación esta genera un archivo XML de salida llamado "Altova_Hierarchical_output.xml", siempre que no indique otro valor como parámetro.
Ambos componentes (InputFileName y OutputFileName) son componentes de entrada simples, así que podrá suministrarlos como parámetros de entrada a la hora de ejecutar la asignación. A continuación explicamos cómo hacerlo en estos lenguajes de transformación:
•XSLT 2.0, con ayuda de RaptorXML Server
XSLT 2.0
Si genera código en XSLT 1.0, XSLT 2.0 o XSLT 3.0, los parámetros de entrada se escriben en el archivo por lotes DoTransform.bat que se ejecutará con RaptorXML Server (véase Automatización con RaptorXML Server). Para usar otro archivo de entrada (o de salida), puede pasar los parámetros necesarios en la línea de comandos cuando llame al archivo DoTransform.bat o editar este último para incluir los parámetros necesarios.
Siga estos pasos para suministrar un parámetro de entrada personalizado al archivo DoTransform.bat:
1.Primero genere código XSLT. Por ejemplo, genere 2.0 (Archivo | Generar código en | XSLT 2.0) a partir del diseño de asignación FileNamesAsParameters.mfd.
2.Copie el archivo Altova_Hierarchical.xml del directorio <Documentos>\Altova\MapForce2024\MapForceExamples\ al directorio donde generó el código XSLT 2.0 (en este ejemplo usamos el directorio de salida c:\codegen\examples\xslt2\). Este archivo hará las veces de parámetro personalizado.
3.Edite el archivo por lotes DoTransform.bat para incluir el parámetro de entrada personalizado antes o después de %* (ver texto resaltado más abajo). Observe que el valor de parámetro va entre comillas simples. Los parámetros de entrada disponibles se enumeran en la sección rem (Remark).
@echo off
RaptorXML xslt --xslt-version=2 --input="MappingMapToAltova_Hierarchical.xslt" --param=InputFileName:'Altova_Hierarchical.xml' %* "MappingMapToAltova_Hierarchical.xslt" rem --param=InputFileName: rem --param=OutputFileName: IF ERRORLEVEL 1 EXIT/B %ERRORLEVEL% |
Cuando ejecute el archivo por lotes DoTransform.bat, RaptorXML Server finaliza la transformación usando Altova_Hierarchical.xml como parámetro de entrada.
C#
Para indicar un parámetro de entrada personal a la aplicación línea de comandos en C# generada por MapForce:
1.Abra el ejemplo FileNamesAsParameters.mfd que encontrará en el directorio <Documentos>\Altova\MapForce2024\MapForceExamples\.
2.En el menú Archivo haga clic en Generar código en | C# y seleccione un directorio de destino (que en este ejemplo es C:\codegen\examples\cs).
3.Abra la solución en Visual Studio y pulse Ctrl + Mayús + B para generarla.
4.Copie el archivo Altova_Hierarchical.xml desde <Documentos>\Altova\MapForce2024\MapForceExamples\ al directorio en el que se genera Mapping.exe (en este ejemplo, C:\codegen\examples\cs\Mapping\bin\Debug). Como hemos explicado anteriormente, la asignación intentará leer este archivo si no indica otro valor para el parámetro InputFileName.
5.Abra una ventana de la línea de comandos y cambie al directorio en el que se encuentra Mapping.exe.
cd C:\codegen\examples\cs\Mapping\bin\Debug |
6.Ejecute la aplicación con este comando:
Mapping.exe /OutputFileName output.xml |
En el comando anterior el parámetro de entrada /OutputFileName indica el nombre del archivo de salida que se va a generar.
C++
Para indicar un un parámetro de entrada personal a la aplicación línea de comandos en C++ generada por MapForce:
1.Abra el ejemplo FileNamesAsParameters.mfd que encontrará en el directorio <Documentos>\Altova\MapForce2024\MapForceExamples\.
7.En el menú Archivo haga clic en Generar código en Generar código en | C++ y seleccione un directorio de destino (que en este ejemplo es C:\codegen\examples\cpp).
2.Abra la solución en Visual Studio y pulse Ctrl + Mayús + B para generarla.
3.Copie el archivo Altova_Hierarchical.xml desde <Documentos>\Altova\MapForce2024\MapForceExamples\ al directorio en el que se genera Mapping.exe (en este ejemplo C:\codegen\examples\cpp\Mapping\Debug). Como hemos explicado anteriormente, la asignación intentará leer este archivo si no indica otro valor para el parámetro InputFileName.
8.Abra una ventana de la línea de comandos y cambie al directorio en el que se encuentra Mapping.exe.
cd C:\codegen\examples\cpp\Mapping\Debug |
4.Ejecute la aplicación con este comando:
Mapping.exe /OutputFileName output.xml |
En el comando anterior el parámetro de entrada /OutputFileName indica el nombre del archivo de salida que se va a generar.