O construtor de Expressão do XPath fornece suporte qualificado para espaços de nomes.
A tabela encapsula dados implementáveis transmitidos ao ambiente de tempo de execução, como parte dos dados de atributo dos nós e é usada pelo nó para modificar expressões através da substituição do prefixo-para-URI . As expressões finais suportam correspondência de espaço de nomes, pois são processadas contra uma árvore de destino quando são implementadas pelo mecanismo de processamento de mensagens associado, ou seja, o mecanismo de tempo de execução do XPath 1.0 ou o mecanismo do tempo de execução do ESQL.
Ao inserir uma expressão de referência de campo do ESQL em um campo de caminho de leitura ou de leitura-gravação ou uma expressão de caminho do XPath 1.0 em um campo de caminho de leitura ou de leitura-gravação ou um campo de expressão geral (expressões gerais podem conter zero ou mais expressões de caminho), o WebSphere Message Broker entende a linguagem da sintaxe utilizada.
XPath é o padrão para campos de expressão geral que são validados assegurando que estejam em conformidade com a gramática XPath 1.0. Para campos de expressão de caminho, XPath é utilizado se a expressão for válida e começar com um sinal de $.
A linguagem que pode ser usada é determinada pelo editor de propriedade atualmente em uso para um campo de propriedade do nó.
Os prefixos de espaço de nomes são utilizados em uma expressão XPath ou ESQL para tornar as instruções mais curtas e fáceis de entender, enquanto ainda suporta a capacidade de qualificar uma correspondência de nome de elemento, correspondendo também a URI do espaço de nomes associado.
<b:a xmlns:b='xyz'>
<!-- the namespace of elements 'a' and 'c' using prefix 'b' is xyz -->
<b:c>
<b:d xmlns:b='qrs'>
<!-- the namespace of elements 'd' and 'e' using prefix 'b' is now qrs -->
<b:e>100</b:e>
</b:d>
</b:c>
</b:a>
Observe que o escopo da declaração de espaço de nomes que declara um prefixo estende do início da tag inicial na qual aparece até o fim da tag de finalização correspondente, excluindo o escopo de qualquer declaração interna com o mesmo prefixo de espaço de nomes. No caso de uma tag vazia, o escopo é a própria tag: >.
/b:a/b:c/b2:d/b2:e
Observe que para evitar o prefixo gerado automaticamente para o mapa de URI produzido no diálogo de expressão que sobrecarrega o mesmo prefixo (nesse caso, b), o prefixo interno 'b' tem um valor numérico anexado para distinguí-lo do prefixo externo 'b'. Essa estratégia é repetida para cada conflito de nome de prefixo.
Root.b:a.b:c.b2:d.b2:e
Para suportar prefixos de espaço de nomes dentro das expressões, o Diálogo do Construtor de Expressão XPath gera automaticamente (com base no conteúdo de definições de esquema, através das quais expressões são geradas) um prefixo para uma tabela de configurações de espaço de nomes de URI.
Sem o uso dos prefixos de espaço de nomes em dados de mapeamento de URI nesta tabela, o ambiente de tempo de execução seria forçado a adotar uma abordagem menos eficiente, onde expressões XPath portáveis mas detalhadas seriam necessárias para ele fornecer suporte correspondente ao espaço de nomes.
/b:a/b:c/b2:d/b2:e
teria o formato: /*[namespace-uri()='xyz' and local-name()='a']/*[namespace-uri()='xyz'
and local-name()='c']/*[namespace-uri()='qrs' and
local-name()='d']/*[namespace-uri()='qrs' and local-name()='e']