私のddiがrefddiNmrと一致し、名前に「アクティブ」が含まれていない値のグループから最大料金を取得しようとしていました
複数の ddi オブジェクトがあり、ddi 名は「PH」、「FX」などにすることができます。「PH」ddiごとに、名前に「アクティブ」が含まれていない「newP」オブジェクトから最大料金と名前を取得したい
for ループやその他のオプションを使用して複数の xsl コードを記述しようとしましたが、結果が得られなかったために for ループを削除することになりました。
現在、そのddiの最大値を返すのではなく、すべてのnewPオブジェクトから最大値を返す次のコードがあります。これを達成する方法がわかりません。これに関する提案を専門家に依頼します。これを行う方法はありますか。
私の期待される出力は
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>