Flex Gateway新着情報
Governance新着情報
Monitoring API Managerヘッダーでさまざまな名前空間を定義し、各タグで参照できます。
開始する前に、DataWeave バージョン 2 (%dw 2.0
) は Mule 4 アプリケーションを対象とすることに注意してください。Mule 3 アプリケーションの場合、Mule 3.9 ドキュメントセットの DataWeave バージョン 1 (%dw 1.0
) の例を参照してください。他の Mule バージョンの場合は、目次の Mule Runtime バージョンセレクターを使用できます。
Mule 4.2.1 リリース以降、DataWeave では、名前空間キーおよび属性を動的に生成できます。
次の例では、以下を使用します。
ヘッダーの名前空間定義用の ns
XML 要素の他の属性を定義する @
%dw 2.0
output application/xml
ns orders http://www.acme.com/shemas/Orders
ns stores http://www.acme.com/shemas/Stores
---
root:
orders#orders: {
stores#shipNodeId: "SF01",
stores#shipNodeId @(shipsVia:"LA01"): "NY03"
}
<?xml version='1.0' encoding='UTF-8'?>
<root>
<orders:orders xmlns:orders="http://www.acme.com/shemas/Orders">
<stores:shipNodeId xmlns:stores="http://www.acme.com/shemas/Stores">SF01</stores:shipNodeId>
<stores:shipNodeId xmlns:stores="http://www.acme.com/shemas/Stores" shipsVia="LA01">NY03</stores:shipNodeId>
</orders:orders>
</root>
サポートの開始は Mule バージョン 4.2.1 以降
名前空間キーおよび属性の次のサンプル出力値では、DataWeave が DataWeave 変数で定義された入力を使用してその役割を果たしています。
%dw 2.0
fun dynKeyNs(ns0: Namespace, value: Any) = { ns0#myDynKey: value }
fun dynAttrNs(ns0: Namespace, value: Any) = { myChildTag @(ns0#myDynAttribute: true): value }
var namespace1 = {uri: "http://acme.com", prefix: "ns0"} as Namespace
var namespace2 = {uri: "http://emca.com", prefix: "ns0"} as Namespace
output application/xml
---
root:
{
mytagA: dynKeyNs(namespace1, "myTest1"),
myTagB: dynKeyNs(namespace2, "myTest2"),
myTagC: dynAttrNs(namespace1, "myTest1"),
myTagD: dynAttrNs(namespace2, "myTest2")
}
<?xml version='1.0' encoding='UTF-8'?>
<root>
<mytagA>
<ns0:myDynKey xmlns:ns0="http://acme.com">myTest1</ns0:myDynKey>
</mytagA>
<myTagB>
<ns0:myDynKey xmlns:ns0="http://emca.com">myTest2</ns0:myDynKey>
</myTagB>
<myTagC>
<myChildTag xmlns:ns0="http://acme.com" ns0:myDynAttribute="true">myTest1</myChildTag>
</myTagC>
<myTagD>
<myChildTag xmlns:ns0="http://emca.com" ns0:myDynAttribute="true">myTest2</myChildTag>
</myTagD>
</root>
次の DataWeave スクリプトでは、オブジェクトとして XML 名前空間を定義する方法を示しています。これにより、ハイフン (-
) などの特殊文字を名前空間の定義で使用できるようになります。
%dw 2.0
output application/xml
var myNS = {uri: "http://www.abc.com", prefix: "ns-0"} as Namespace
---
{myNS#bla : "dw"}
<?xml version='1.0' encoding='UTF-8'?>
<ns-0:bla xmlns:ns-0="http://www.abc.com">dw</ns-0:bla>