【发布时间】:2015-08-31 00:18:03
【问题描述】:
我有基于 XML 的目标数据:
<myTargetData>
<myMap>
<pairs>
<key>KEY_1</key>
<value>
<myMap>
<pairs>
<key>INNER_KEY_1</key>
<value/>
</pairs>
<pairs>
<key>INNER_KEY_2</key>
<value/>
</pairs>
<pairs>
<key>INNER_KEY_3</key>
<value>
<myMap>
<pairs>
<key>INNER_INNER_KEY_1</key>
<value/>
</pairs>
<pairs>
<key>INNER_INNER_KEY_2</key>
<value/>
</pairs>
</myMap>
</value>
</pairs>
</myMap>
</value>
</pairs>
<pairs>
<key>KEY_2</key>
<value>
<myString>test string 2</myString>
</value>
</pairs>
<pairs>
<key>KEY_3</key>
<value>
<myString>test string 3</myString>
</value>
</pairs>
<pairs>
<key>KEY_4</key>
<value>
<myString>test string 4</myString>
</value>
</pairs>
</myMap>
</myTargetData>
有配置字段列表:
<myFieldData>
<field>KEY_1</field>
<field>INNER_KEY_2</field>
<field>INNER_INNER_KEY_1</field>
<field>KEY_3</field>
<myFieldData>
配置字段值表示目标XML应附加以下两对:
<pairs>
<key>{key name}_appendix1</key>
<value><myString>smth text</myString></value>
</pairs>
<pairs>
<key>{key name}_appendix2</key>
<value><myString>smth text</myString></value>
</pairs>
转换后的结果应该是:
<myTargetData>
<myMap>
<pairs>
<key>KEY_1</key>
<value>
<myMap>
<pairs>
<key>INNER_KEY_1</key>
<value/>
</pairs>
<pairs>
<key>INNER_KEY_2</key>
<value/>
</pairs>
<pairs>
<key>INNER_KEY_2_appendix1</key>
<value><myString>smth text</myString></value>
</pairs>
<pairs>
<key>INNER_KEY_2_appendix2</key>
<value><myString>smth text</myString></value>
</pairs>
<pairs>
<key>INNER_KEY_3</key>
<value>
<myMap>
<pairs>
<key>INNER_INNER_KEY_1</key>
<value/>
</pairs>
<pairs>
<key>INNER_INNER_KEY_1_appendix1</key>
<value><myString>smth text</myString></value>
</pairs>
<pairs>
<key>INNER_INNER_KEY_1_appendix2</key>
<value><myString>smth text</myString></value>
</pairs>
<pairs>
<key>INNER_INNER_KEY_2</key>
<value/>
</pairs>
</myMap>
</value>
</pairs>
</myMap>
</value>
</pairs>
<pairs>
<key>KEY_1_appendix1</key>
<value><myString>smth text</myString></value>
</pairs>
<pairs>
<key>KEY_1_appendix2</key>
<value><myString>smth text</myString></value>
</pairs>
<pairs>
<key>KEY_2</key>
<value>
<myString>test string 2</myString>
</value>
</pairs>
<pairs>
<key>KEY_3</key>
<value>
<myString>test string 3</myString>
</value>
</pairs>
<pairs>
<key>KEY_3_appendix1</key>
<value><myString>smth text</myString></value>
</pairs>
<pairs>
<key>KEY_3_appendix2</key>
<value><myString>smth text</myString></value>
</pairs>
<pairs>
<key>KEY_4</key>
<value>
<myString>test string 4</myString>
</value>
</pairs>
</myMap>
</myTargetData>
是否可以使用 XQuery 做到这一点?还是更好地使用 XSLT?如果可能的话 - 怎么做?也许是递归函数?转换将用于 Oracle Service Bus。
【问题讨论】:
-
OSB 是否提供 XSLT 2.0 处理器?
-
没有。 OSB 仅支持 XSLT 1.0。
标签: xml xslt xquery transformation osb