O analisador XMLNSC fornece suporte integral a espaços de nomes.
O analisador XMLNSC utiliza os seguintes tipos de campos para representar declarações de espaço de nomes. Use as constantes de tipo de campo que estão listadas nesta tabela quando criar declarações de espaço de nomes na árvore de mensagens.
Construção de XML | Constante do tipo de campo XMLNSC | Valor |
---|---|---|
Declaração de espaço de nomes |
|
|
Construção de XML | Constante do tipo de campo XMLNSC | Propósito |
---|---|---|
Declaração de espaço de nomes | XMLNSC.NamespaceDecl | Corresponde às declarações de espaço de nomes entre aspas simples e duplas |
DECLARE space1 NAMESPACE 'namespace1';
SET OutputRoot.XMLNSC.space1:root.(XMLNSC.NamespaceDecl)xmlns:ns1 = space1;
SET OutputRoot.XMLNSC.space1:root.space1:example = 'ABCDE';
Isso cria a seguinte mensagem XML: <ns1:root xmlns:ns1="namespace1">
<ns1:example>ABCDE</ns1:example>
</ns1:root>
Observe que a constante NAMESPACE space1 é
apenas uma variável local no ESQL; ela não afeta o prefixo de espaço de nomes
ns1 que foi definido pelo elemento NameSpaceDecl
e aparece na mensagem de saída. Entretanto, conforme mostrado aqui, space1 pode ser usado para inicializar NameSpaceDecl para ns1. Isto evita a necessidade de duplicar o URI de espaço de nomes ('namespace1' neste exemplo), que na prática geralmente é uma cadeia muito mais longa.
DECLARE space1 NAMESPACE 'namespace1';
SET OutputRoot.XMLNSC.space1:root.(XMLNSC.NamespaceDecl)xmlns = space1;
SET OutputRoot.XMLNSC.space1:root.space1:example = 'ABCDE';
Isso cria a seguinte mensagem XML: <root xmlns="namespace1">
<example>ABCDE</example>
</root>
Observe que os elementos da sintaxe root e example devem
ter um espaço de nomes não-vazio. A declaração de espaço de nomes padrão significa
que qualquer elemento filho sem um prefixo está no espaço de nomes namespace1. DECLARE space1 NAMESPACE 'namespace1';
SET OutputRoot.XMLNSC.root.(XMLNSC.NamespaceDecl)xmlns = space1;
SET OutputRoot.XMLNSC.root.example = 'ABCDE';
Esse exemplo faz com que o analisador
XMLNSC emite a mensagem BIP5014 ao tentar criar uma árvore de mensagens. Os elementos root e example estão
dentro do escopo da declaração de espaço de nomes padrão; portanto,
no ESQL, estes elementos devem ser qualificados por um prefixo de espaço de nomes ligado
a esse espaço de nomes.SET OutputRoot.(XMLNSC.DoubleNamespaceDecl)xmlns:ns2 = space1;
Esse exemplo de uma instrução SET cria uma declaração de namespace com o nome ns2 no namespace 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;
Esses exemplos de uma instrução CREATE também criam uma declaração de namespace com o nome ns2 no namespace xmlns.CREATE LASTCHILD OF OutputRoot TYPE XMLNSC.DoubleNamespaceDecl NAME 'xmlns:ns2' VALUE space1;