Nutzen Sie die Namespaces für Nachrichten, die vom DFDL-Parser syntaktisch analysiert werden.
Es ist möglich, eine DFDL-Schemadatei zu erstellen, die über einen Zielnamespace verfügt. Alle Nachrichten, die in dem betreffenden DFDL-Schema definiert werden, gehören diesem Namespace an. Wenn der DFDL-Parser eine der Nachrichten syntaktisch analysiert, ist der Namespace in den Elementen enthalten, die in der logischen Nachrichtenbaumstruktur erstellt werden. Beim Codieren des ESQL-Verweises auf das Element müssen Sie den Namespace einfügen. Wird der Namespace nicht eingefügt, durchsucht der Broker den Namespace no target. Wird das Element im Namespace no target nicht gefunden, durchsucht der Broker alle anderen bekannten Namespaces in der Nachrichtenmodellschemadatei. Geben Sie aus Gründen der Leistung und Integrität immer die Namespaces an, falls diese relevant sind.
Die effektivste Weise des Verweises auf Elemente, wenn Namespaces aktiviert sind, besteht in der Definition einer Namespace-Konstante und deren Verwendung in den entsprechenden ESQL-Anweisungen. Durch dieses Verfahren wird die Lesbarkeit und Verwaltung Ihres ESQL-Codes erheblich vereinfacht.
Definieren Sie eine Konstante mithilfe der Anweisung DECLARE NAMESPACE:
DECLARE ns01 NAMESPACE 'http://www.ns01.com'
SET OutputRoot.DFDL.ns01:MyMessage.ns01:Element1 = InputBody.ns01:MyMessage.ns01:Element1;
ns01 wird aufgrund seiner Deklarationsweise richtigerweise als Namespace interpretiert.
Sie können für die Deklaration eines Namespace auch eine CHARACTER-Variable verwenden:
DECLARE ns02 CHARACTER 'http://www.ns02.com'
SET OutputRoot.DFDL.{ns02}:MyMessage.{ns02}:Element1 = InputBody.{ns02}:MyMessage.{ns02}:Element1;
Wenn Sie diese Methode verwenden, müssen Sie die deklarierte Variable in geschweifte Klammern einschließen, um sicherzustellen, dass sie als Namespace interpretiert wird.
Wenn Sie befürchten, dass eine CHARACTER-Variable geändert werden könnte, können Sie eine CONSTANT CHARACTER-Deklaration verwenden:
DECLARE ns03 CONSTANT CHARACTER 'http://www.ns03.com'
SET OutputRoot.DFDL.{ns03}:MyMessage.{ns03}:Element1 = InputBody.{ns03}:MyMessage.{ns03}:Element1;
Sie können einen Namespace, eine Konstante und eine Variable innerhalb eines Moduls oder in einer Funktion deklarieren. Im Schemabereich (d. h. außerhalb eines Modulbereichs) können Sie jedoch nur einen Namespace oder eine Konstante deklarieren.
Weitere Informationen zur Verwendung von Namespaces in Verbindung mit DFDL finden Sie unter Namespaces im Abschnitt DFDL V1.0 - Spezifikation.