我需要计算一个等于2 *最低二维的值。
<VALUES>
<LENGTH>10</LENGTH>
<WIDTH>12</WIDTH>
<HEIGHT>11</HEIGHT>
</VALUES>
所以在上面的例子中,我们需要GIRTH = 2 *(LENGTH + HEIGHT)= 44。
导致新的XML如下所示(请注意,输入和输出已经简化)
<RESULT>
<LENGTH>10</LENGTH>
<WIDTH>12</WIDTH>
<HEIGHT>11</HEIGHT>
<GIRTH>44</GIRTH>
</RESULT>
如何才能获得最低的两个最干净的方法? (我的情况是,LENGTH和HEIGHT,但它可能是三个中的任何两个)
我宁愿不使用3 if语句来覆盖3种可能性,我试图避免使用C#帮助程序来处理我不能找到的所有内容。
另外,我在BIZTALK2010中使用它,我不确定它是xslt 1还是xslt 2.
答案 0 :(得分:1)
解决方案如下所示:
fetch
答案 1 :(得分:1)
它意味着用作计算GIRTH的方法,即2 最短尺寸
假设GIRTH按照here解释的方式计算,我会这样做:
XSLT 1.0
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:exsl="http://exslt.org/common"
extension-element-prefixes="exsl">
<xsl:strip-space elements="*"/>
<xsl:template match="/VALUES">
<xsl:variable name="sorted-dimensions">
<xsl:for-each select="*">
<xsl:sort select="." order="ascending" data-type="number"/>
<xsl:copy-of select="."/>
</xsl:for-each>
</xsl:variable>
<girth>
<xsl:value-of select="2 * sum(exsl:node-set($sorted-dimensions)/*[position()!=3])"/>
</girth>
</xsl:template>
</xsl:stylesheet>
假设VALUES
下只有3个维度。
如果你想直接跳到第3步,你可以这样做:
<measurement>
<xsl:value-of select="2 * sum(exsl:node-set($sorted-dimensions)/*[position()!=3]) + exsl:node-set($sorted-dimensions)/*[3]"/>
</measurement>