我试图从我的 ddi 与 refddiNmr 匹配且名称不包含“Active”的值组中获取 MAX 费用
我有多个 ddi 对象,ddi 名称可以是“PH”、“FX”等;现在对于每个“PH”ddi,我想从名称不包含“Active”的“newP”对象中获取最大费用和名称
我尝试使用 for 循环和其他选项编写多个 xsl 代码,最后我删除了我的 for 循环,因为它们没有给我任何结果。
目前我有以下代码,它从所有 newP 对象返回 Max,而不是返回该 ddi 的最大值。我不确定如何做到这一点,请专家对此提出建议,有没有办法做到这一点。
我的预期输出应该是
Number- 90004
Name = SM 10 P
MaxChre = 39.99 < ! -- Max value within 90004 group-->
Number- 30010 < !-- this should not come because its not of name "PH"-->
Number- 30011
Name = SBB 15 FX
MaxChre = 40.0 < ! -- Max value within 30011 group-->
Number- 30012
Name = VEI
MaxChre = 41.0 < ! -- Max value within 30012 group-->
为问题中的缩进道歉。以下是代码和数据的其他详细信息:
我的越野车代码:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:date="http://exslt.org/dates-and-times" extension-element-prefixes="date" xmlns:math="http://exslt.org/math" version="1.0">
<xsl:output method="xml" encoding="utf-8" indent="no"/>
<xsl:template match="/">
<xsl:variable name="New" select="/SM/xml_data/emData" />
<xsl:for-each select="/SM/xml_data/emData/ddi">
Number- <xsl:value-of select="Nmr"/>
<xsl:if test="name='PH'">
Amount- <xsl:value-of select="math:max(/SM/xml_data/emData/newP[contains(refddiNmr,Nmr)]/chre)"/>
Name- <xsl:value-of select="/SM/xml_data/emData/newP/name"/>
</xsl:if>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
样本数据:
<SM>
<xml_data>
<emData>
<ddi>
<Nmr>90004</Nmr>
<name>PH</name>
</ddi>
<ddi>
<Nmr>30010</Nmr>
<name>FA</name>
</ddi>
<ddi>
<Nmr>30011</Nmr>
<name>PH</name>
</ddi>
<ddi>
<Nmr>30012</Nmr>
<name>PH</name>
</ddi>
<newP>
<start>2012-03-30</start>
<name>VAF - Active</name>
<chre>29.99</chre>
<refddiNmr>90004</refddiNmr>
</newP>
<newP>
<start>2012-03-30</start>
<name>VAFD - Active</name>
<chre>-29.99</chre>
<refddiNmr>90004</refddiNmr>
</newP>
<newP>
<start>2012-03-30</start>
<name>SM 10 P</name>
<chre>39.99</chre>
<refddiNmr>90004</refddiNmr>
</newP>
<newP>
<start>2012-03-30</start>
<name>VE-I</name>
<chre>10.0</chre>
<refddiNmr>90004</refddiNmr>
</newP>
<newP>
<start>2012-03-30</start>
<name>SBB 15 FX</name>
<chre>40.0</chre>
<refddiNmr>30011</refddiNmr>
</newP>
<newP>
<start>2012-03-30</start>
<name>FXA - Active</name>
<chre>9.99</chre>
<refddiNmr>30011</refddiNmr>
</newP>
<newP>
<start>2012-03-30</start>
<name>FAD - Active</name>
<chre>-9.99</chre>
<refddiNmr>30011</refddiNmr>
</newP>
<newP>
<start>2012-03-30</start>
<name>VEI</name>
<chre>40.0</chre>
<refddiNmr>30011</refddiNmr>
</newP>
<newP>
<start>2012-03-30</start>
<name>SBB 15 FXA</name>
<chre>90.0</chre>
<refddiNmr>30010</refddiNmr>
</newP>
<newP>
<start>2012-03-30</start>
<name>FXA - Active</name>
<chre>9.99</chre>
<refddiNmr>30010</refddiNmr>
</newP>
<newP>
<start>2012-03-30</start>
<name>FAD - Active</name>
<chre>-9.99</chre>
<refddiNmr>30010</refddiNmr>
</newP>
<newP>
<start>2012-03-30</start>
<name>VEI</name>
<chre>45.0</chre>
<refddiNmr>30010</refddiNmr>
</newP>
<newP>
<start>2012-03-30</start>
<name>SBB 15 FXB</name>
<chre>40.0</chre>
<refddiNmr>30012</refddiNmr>
</newP>
<newP>
<start>2012-03-30</start>
<name>FXB - Active</name>
<chre>9.99</chre>
<refddiNmr>30012</refddiNmr>
</newP>
<newP>
<start>2012-03-30</start>
<name>FAD - Active</name>
<chre>-9.99</chre>
<refddiNmr>30012</refddiNmr>
</newP>
<newP>
<start>2012-03-30</start>
<name>VEI</name>
<chre>41.0</chre>
<refddiNmr>30012</refddiNmr>
</newP>
</emData>
</xml_data>
</SM>