Declarar espacios de nombres personalizados

www.altova.com Imprimir este apartado Página anterior Subir un nivel Página siguiente

Inicio >  Orígenes y destinos de datos > XML y esquemas XML >

Declarar espacios de nombres personalizados

Cuando una asignación produce un resultado XML, MapForce deriva automáticamente el espacio de nombres (o conjunto de espacios de nombres) de cada elemento y atributo a partir del esquema asociado al componente de destino. Este es el comportamiento predeterminado de MapForce y el más apropiado en las asignaciones de datos que implican la generación de resultados XML.

 

Sin embargo, en otros casos puede ser preferible tener un mayor control sobre el espacio de nombres de los elementos en el código XML resultante. Por ejemplo, en algunos casos puede ser necesario declarar a mano el espacio de nombres de un elemento desde la asignación directamente.

 

Para comprender mejor este funcionamiento abra la asignación BooksToLibrary.mfd de la carpeta <Documentos>\Altova\MapForce2019\MapForceExamples\Tutorial\. Haga clic con el botón derecho en el nodo library y seleccione Agregar espacio de nombres en el menú contextual.

mf_custom_namespace_01

Observe que ahora aparecen dos nodos nuevos bajo el nodo library: el nodo namespace y el nodo prefix.

mf_custom_namespace_02

 

Ahora puede crear asignaciones entre estos nodos y valores de cadena. Por ejemplo, en la imagen siguiente puede ver que se definieron dos constantes (con el comando de menú Insertar | Constante) que aportan el espacio de nombres "altova.library" y el prefijo "lib":

mf_custom_namespace_03

 

En el resultado podrá ver que el atributo xmlns:<prefix>="<namespace>" se añadió al elemento y que <prefix> y <namespace> son valores procedentes de la asignación (en este caso vienen dados por constantes). El resultado será:

 

<?xml version="1.0" encoding="UTF-8"?>
<library xmlns:lib="altova.library" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="library.xsd">

...

 

Nota:la declaración de espacios de nombres personalizados (y el comando Agregar espacio de nombres) solamente es relevante para componentes de destino XML y solamente para elementos. El comando Agregar espacio de nombres no está disponible en el caso de atributos ni nodos comodín. Tampoco está disponible en caso de nodos que reciben datos por medio de conexiones de copia total.

 

También puede declarar varios espacios de nombres para un mismo elemento. Para ello vuelva a hacer clic con el botón derecho en el nodo y seleccione Agregar espacio de nombres en el menú contextual. Bajo el nodo aparecerán dos nodos más para el espacio de nombres y para el prefijo. Ahora podrá conectar dos nuevos valores a estos dos nodos.

 

Para eliminar una declaración de espacio de nombres haga clic con el botón derecho en el nodo ns:namespace y seleccione Quitar espacio de nombres en el menú contextual.

 

Es obligatorio conectar los conectores de entrada de namespace y de prefix (aunque estén conectados a valores vacíos).

 

Si desea declarar un espacio de nombres predeterminado (es decir, un espacio de nombres con el formato xmlns="miEspacioPredeterminado"), basta con asignar un valor de cadena vacío al nodo prefix. Por ejemplo, en la imagen siguiente, el valor de la segunda constante es una cadena vacía.

 

mf_custom_namespace_04

 

El resultado sería:

 

<?xml version="1.0" encoding="UTF-8"?>
<library xmlns="altova.library" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="library.xsd">

...

 

Si necesita crear prefijos para nombres de atributo (p. ej. <number prod:id="prod557">557</number>) puede habilitar el acceso dinámico a los atributos del nodo (véase Asignar nombres de nodos) o editar el esquema para que contenga un atributo prod:id para <number>.

 


© 2019 Altova GmbH