我在想如果/如何在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