Los espacios de nombres en los mensajes XML están soportados por los analizadores XMLNSC y XMLNS. Los espacios de nombres no están soportados por el analizador XML.
Análisis
Los analizadores XMLNS y XMLNSC pueden analizar cualquier documento XML con el formato correcto, tanto si el documento contiene espacios de nombres como si no los contiene. Si los elementos o atributos tienen espacios de nombres, dichos espacios de nombres se aplican a los elementos y atributos del árbol de mensaje. Las correlaciones de prefijos del espacio de nombres también se transportan al árbol de mensaje y se utilizan cuando se vuelve a serializar el árbol de mensaje a XML.
- Si un elemento o atributo del XML de entrada tiene un espacio de nombres, el nodo correspondiente del árbol de mensaje también tiene dicho espacio de nombres.
- Si un elemento contiene una declaración del espacio de nombres (un atributo xmlns), se crea un elemento hijo que contiene su URI de espacio de nombres y prefijo en el árbol de mensaje.
Mientras el mensaje pasa por un flujo de mensajes, se pueden modificar los espacios de nombres y las correlaciones del espacio de nombres utilizando ESQL o cualquier otra tecnología que ofrezca el intermediario de mensajes.
Escritura
Los espacios de nombres y los prefijos se
conservan en el árbol de mensajes durante el análisis y se utilizan cuando los
analizadores XMLNS y XMLNSC convierten un árbol de mensajes en una corriente de bits XML.
- Cuando se serializa un árbol de mensaje, el analizador explora las declaraciones de cada elemento XML. Si se encuentra alguna, las utiliza para seleccionar los prefijos del espacio de nombres en el documento de salida.
- Si un elemento del árbol de mensaje tiene un espacio de nombres, pero no hay una declaración del espacio de nombres del ámbito de entrada para su URI de espacio de nombres, automáticamente se genera un prefijo de espacio de nombres válido y se utiliza en el XML de salida. Los prefijos generados automáticamente tienen el formato
NS1, NS2, etc.
Consejo: Si un elemento del árbol de mensajes tiene un
elemento hijo que es una declaración de 'espacio de nombres predeterminado', cada hijo
de dicho elemento (tanto si es un elemento XML como un atributo XML, en cualquier
profundidad de anidamiento) debe tener un espacio de nombres. Si no se aplica esta norma, el intermediario de mensajes no puede generar la salida XML correcta para el árbol de mensaje.