0
我有一個XML文檔,其中有幾個<item>
元素。在每個內部,可能有一個或多個以下元素:<list>
,<listAfter>
和<listBefore>
。所以,忽略了很多外來的元素,它可能是這樣的:基於條件邏輯通過XSL合併節點
<items>
<item>
<!-- ... various elements ... -->
<list>Enhancements</list>
</item>
<item>
<!-- ... various elements ... -->
<listBefore>Enhancements</listBefore>
<listAfter>Bugs</listAfter>
</item>
<item>
<!-- ... various elements ... -->
<list>Enhancements</list>
<listAfter>Next Release</listAfter>
</item>
<item>
<!-- ... various elements ... -->
<listBefore>Bugs</listBefore>
</item>
<item>
<!-- ... various elements ... -->
</item>
</items>
我想刪除所有不必要<list*>
元素組成,並且每一個<item>
元素<list>
。該元素的值應遵循以下邏輯:
- 如果可用,則使用值
<list>
。 - 否則,如果可用,則使用值
<listAfter>
。 - 否則,如果可用,則使用值
<listBefore>
。 - 如果這些字段都不存在,請使用
No List
作爲值。
用我上面的XML文檔,這就是我所期望的輸出看起來像:
<items>
<item>
<!-- ... various elements ... -->
<list>Enhancements</list>
</item>
<item>
<!-- ... various elements ... -->
<list>Bugs</list>
</item>
<item>
<!-- ... various elements ... -->
<list>Enhancements</list>
</item>
<item>
<!-- ... various elements ... -->
<list>Bugs</list>
</item>
<item>
<!-- ... various elements ... -->
<list>No List</list>
</item>
</items>
除了使用恆等變換的所有其他元素,以複製,我不知道如何以一種很好的方式包含這個邏輯。一如既往,您的幫助非常感謝。
真棒。我仍然習慣於爲XSLT思考正確的思維方式;謝謝你的幫助! – ABach 2012-02-11 21:24:09