El analizador XMLNSC proporciona soporte completo para los espacios de nombres.
El analizador XMLNSC utiliza los siguientes tipos de campos para representar declaraciones de espacio de nombres. Utilice las constantes de tipo de campos que aparecen en esta lista cuando cree declaraciones de espacio de nombres en el árbol de mensajes.
Creación XML | Constante de tipo de campo XMLNSC | Valor |
---|---|---|
Declaración de espacio de nombres |
|
|
Creación XML | Constante de tipo de campo XMLNSC | Finalidad |
---|---|---|
Declaración de espacio de nombres | XMLNSC.NamespaceDecl | Establece coincidencia entre las declaraciones de espacio de nombres entre comillas simples y dobles. |
DECLARE space1 NAMESPACE 'namespace1';
SET OutputRoot.XMLNSC.space1:root.(XMLNSC.NamespaceDecl)xmlns:ns1 = space1;
SET OutputRoot.XMLNSC.space1:root.space1:example = 'ABCDE';
Se crea el siguiente mensaje XML: <ns1:root xmlns:ns1="namespace1">
<ns1:example>ABCDE</ns1:example>
</ns1:root>
Observe que la constante space1 de NAMESPACE es sólo una
variable local en el ESQL; no afecta al prefijo del espacio de nombres ns1 que define el elemento NameSpaceDecl y aparece en el mensaje de salida. Sin embargo, tal como se muestra aquí, space1 se puede utilizar para inicializar NameSpaceDecl para ns1. De esta forma se evita la necesidad de duplicar el URI de espacio de nombres ('namespace1' en este ejemplo), que a la práctica normalmente es una serie mucho más larga.
DECLARE space1 NAMESPACE 'namespace1';
SET OutputRoot.XMLNSC.space1:root.(XMLNSC.NamespaceDecl)xmlns = space1;
SET OutputRoot.XMLNSC.space1:root.space1:example = 'ABCDE';
Se crea el siguiente mensaje XML: <root xmlns="namespace1">
<example>ABCDE</example>
</root>
Observe que los elementos de la sintaxis root y example deben tener un espacio de nombres que no esté vacío. La declaración de espacio de nombres predeterminada significa que cualquier elemento hijo sin un prefijo está en el espacio de nombres
namespace1. DECLARE space1 NAMESPACE 'namespace1';
SET OutputRoot.XMLNSC.root.(XMLNSC.NamespaceDecl)xmlns = space1;
SET OutputRoot.XMLNSC.root.example = 'ABCDE';
Este ejemplo hace que el analizador
XMLNSC emita el mensaje BIP5014 cuando intenta crear el árbol de mensajes. Los elementos root yexample están ambos dentro del ámbito de la declaración de espacio de nombres predeterminada; por lo tanto, en
ESQL, estos elementos deben calificarse mediante un prefijo de espacio de nombres enlazado a ese espacio de nombres.SET OutputRoot.(XMLNSC.DoubleNamespaceDecl)xmlns:ns2 = space1;
En
este ejemplo de una sentencia SET se crea una declaración de espacio de nombres con el
nombre ns2 en el espacio de nombres xmlns.CREATE LASTCHILD OF OutputRoot IDENTITY (XMLNSC.DoubleNamespaceDecl)xmlns:ns2 VALUE space1;
CREATE LASTCHILD OF OutputRoot TYPE XMLNSC.DoubleNamespaceDecl NAMESPACE 'xmlns' NAME 'ns2' VALUE space1;
Estos
ejemplos de una sentencia CREATE también crean una declaración de espacio de nombres con el
nombre ns2 en el espacio de nombres xmlns.CREATE LASTCHILD OF OutputRoot TYPE XMLNSC.DoubleNamespaceDecl NAME 'xmlns:ns2' VALUE space1;