我在想如果/如何在XSLT中完成以下操作。如果不是,你會用什麼? (我用OmniMark,但我想知道這是否可能在XSLT)通過XSLT中的文本處理創建新元素
下面是輸入XML的例子:
<?xml version="1.0" encoding="UTF-8"?>
<fragment>
<firstElem>
<secondElem>D12</secondElem>
</firstElem>
<firstElem>
<secondElem>A3J7-10</secondElem>
</firstElem>
<firstElem>
<secondElem>C2-4</secondElem>
</firstElem>
<firstElem>
<secondElem>QW9R7NP20-25</secondElem>
</firstElem>
</fragment>
我需要什麼做的是採取的文本內容secondElem
元素並根據需要創建儘可能多的新元素firstElem
。 ' - '是一個「通過」,所以'A3J7-10'真的是'A3J7'到'A3J10'(A3J7,A3J8,A3J9,A3J10)。 (有時「通過」將相當大,如A1B2C1-150(A1B2C1到A1B2C150)。)
如果沒有短劃線,則不需要做任何事情。
下面是輸出XML的例子:
<?xml version="1.0" encoding="UTF-8"?>
<fragment>
<firstElem>
<secondElem>D12</secondElem>
</firstElem>
<firstElem>
<secondElem>A3J7</secondElem>
</firstElem>
<firstElem>
<secondElem>A3J8</secondElem>
</firstElem>
<firstElem>
<secondElem>A3J9</secondElem>
</firstElem>
<firstElem>
<secondElem>A3J10</secondElem>
</firstElem>
<firstElem>
<secondElem>C2</secondElem>
</firstElem>
<firstElem>
<secondElem>C3</secondElem>
</firstElem>
<firstElem>
<secondElem>C4</secondElem>
</firstElem>
<firstElem>
<secondElem>QW9R7NP20</secondElem>
</firstElem>
<firstElem>
<secondElem>QW9R7NP21</secondElem>
</firstElem>
<firstElem>
<secondElem>QW9R7NP22</secondElem>
</firstElem>
<firstElem>
<secondElem>QW9R7NP23</secondElem>
</firstElem>
<firstElem>
<secondElem>QW9R7NP24</secondElem>
</firstElem>
<firstElem>
<secondElem>QW9R7NP25</secondElem>
</firstElem>
</fragment>
有沒有辦法在XSLT做到這一點?
謝謝!
好問題(+1)。請參閱我的答案以獲得簡短而高效的XSLT 2.0解決方案。 – 2010-07-13 13:32:43