我在xslt2中有两个数字序列。它们都具有相同的长度(并且总是会)。例如它们看起来像这样:
seq1:10 20 ......
seq2:1 2 ...
我需要的是将seq1 [0]乘以seq2 [0],seq [1] * seq [1]的方式乘以这两者,等等。
所以在我需要的解决方案中,我会得到序列10 40而不是我得到以下10 20 20 40.所以整个序列成倍增加。
所以也许有人知道这个问题的答案或解决方法,我们都非常感激。
感谢
修改
altova的问题在于我无法自己添加xslt2代码,每次修改映射中的内容时都会覆盖该文件。
答案 0 :(得分:0)
您可以使用xsl:for-each
和范围来确定位置。这是一个例子......
XSLT 2.0
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:variable name="seq1" select="(10,20)"/>
<xsl:variable name="seq2" select="(1,2)"/>
<xsl:template match="/">
<xsl:variable name="newSeq" as="item()*">
<xsl:for-each select="1 to max((count($seq1),count($seq2)))">
<xsl:sequence select="$seq1[current()] * $seq2[current()]"/>
</xsl:for-each>
</xsl:variable>
<results>
<xsl:value-of select="$newSeq" separator=","/>
</results>
</xsl:template>
</xsl:stylesheet>
输出(以逗号分隔,只是为了显示序列)
<results>10,40</results>
注意:这只会处理偶数个序列项。如果任一序列比另一个序列多,那么它们将不包含在输出中。如果您需要处理这种情况,则必须添加其他逻辑。
编辑 - 刚看到您关于无法自行添加XSLT代码的评论。我会在这里留下我的答案,万一有人不使用mapforce会发现这个答案有用。