【发布时间】:2018-10-11 14:34:14
【问题描述】:
下面是输入 XML,我正在寻找所需的输出 -
<xml>
<a>
<element0>987</element0>
</a>
<a>
<a_list_one>
<a_lag_one>
<element1>123</element1>
<element2>456</element2>
</a_lag_one>
</a_list_one>
<a_list_one>
<a_lag_one>
<element1>789</element1>
<element2>678</element2>
</a_lag_one>
</a_list_one>
<a_list_two>
<a_lag_two>
<a_list_three>
<a_lag_three>
<element3>570</element3>
<element4>678</element4>
</a_lag_three>
</a_list_three>
<a_list_three>
<a_lag_three>
<element3>989</element3>
<element4>231</element4>
</a_lag_three>
</a_list_three>
</a_lag_two>
<a_lag_two>
<a_list_three>
<a_lag_three>
<element3>570</element3>
<element4>678</element4>
</a_lag_three>
</a_list_three>
<a_list_three>
<a_lag_three>
<element3>9873</element3>
<element4>278</element4>
</a_lag_three>
</a_list_three>
<a_list_four>
<a_lag_four>
<element5>9121</element5>
<element6>9879</element6>
</a_lag_four>
</a_list_four>
<a_list_three>
<a_lag_four>
<element5>098</element5>
<element6>231</element6>
</a_lag_four>
</a_list_three>
</a_lag_two>
</a_list_two>
<a_list_four>
<a_lag_four>
<element5>654</element5>
<element6>7665</element6>
</a_lag_four>
</a_list_four>
</a>
<b>
<b_list_one>
<b_lag_one>
<element8>123</element8>
<element9>456</element9>
</b_lag_one>
</b_list_one>
</b>
<b>
<b_list_one>
<b_lag_one>
<element8>789</element8>
<element9>678</element9>
</b_lag_one>
</b_list_one>
</b>
</xml>
所需的 XML 是:
<xml>
<a>
<element0>987</element0>
<a_list_one>
<a_lag_one>
<element1>123</element1>
<element2>456</element2>
</a_lag_one>
<a_lag_one>
<element1>789</element1>
<element2>678</element2>
</a_lag_one>
</a_list_one>
<a_list_two>
<a_lag_two>
<a_list_three>
<a_lag_three>
<element3>570</element3>
<element4>678</element4>
</a_lag_three>
<a_lag_three>
<element3>989</element3>
<element4>231</element4>
</a_lag_three>
</a_list_three>
</a_lag_two>
<a_lag_two>
<a_list_three>
<a_lag_three>
<element3>570</element3>
<element4>678</element4>
</a_lag_three>
<a_lag_three>
<element3>9873</element3>
<element4>278</element4>
</a_lag_three>
<a_lag_four>
<element5>098</element5>
<element6>231</element6>
</a_lag_four>
</a_list_three>
<a_list_four>
<a_lag_four>
<element5>9121</element5>
<element6>9879</element6>
</a_lag_four>
</a_list_four>
</a_lag_two>
</a_list_two>
<a_list_four>
<a_lag_four>
<element5>654</element5>
<element6>7665</element6>
</a_lag_four>
</a_list_four>
</a>
<b>
<b_list_one>
<b_lag_one>
<element8>123</element8>
<element9>456</element9>
</b_lag_one>
<b_lag_one>
<element8>789</element8>
<element9>678</element9>
</b_lag_one>
</b_list_one>
</b>
</xml>
我正在寻找可以转换为所需输出的 XSL。在这里,共享相同名称并且还包含“_LIST”的节点应该合并在一起。但是,这个逻辑应该只发生在第一个“_LIST”节点内,不应该应用于内部节点。其次,在根级别也是要合并的节点。例如这里,应该只有一个“a”标签和“b”标签。请帮忙。
【问题讨论】:
-
请发布您尝试的 XSLT。谢谢。
-
你说,“这个逻辑应该只发生在第一个“_LIST”节点内,不应该应用于内部节点”。但是,您正在将 a_list_three 组合到所需的结果中。看起来你想要的结果还有其他不一致的地方。在输入中,element2 不在 a_lag_one 中,但它在所需结果中的 a_lag_one 中。您可能需要清理它。
-
您好 Bluewood56,感谢您的提问。所需的 xml 是正确的。我的意思是,出现在 a_lag_two 中的 a_list_four 标记又出现在 a_list_three 中,不应与出现在 a_list_three 之外的 a_list_four 标记合并,因为它们是不同的,即使它们共享相同的名称,因为它们不属于同一个列表- a_list_three。那是关于 element2 的错字。我纠正了这一点。这也属于 a_lag_one。
标签: xml xslt xslt-1.0 xquery xquery-3.0