私は以下のような複数のノードを持つXMLを持っています。私は各ノードをループして、他のノードにwd:day_of_week
と同じものがあるかどうかを確認してから、一致したすべての値に対してすべてwd:calculated_quatity
を追加する必要があります。各ノードの要素を比較する方法と各ループのxslで同じ場合の合計値
たとえば、以下のxmlの場合、「月曜日」として2つの値があります。これらの2つのうちwd:calculated_quantity
を4.75 + 4.08333
として追加する必要があります。
XML:
<wd:Time_Blocks_for_Worker>
<wd:Day_of_the_Week>Monday</wd:Day_of_the_Week>
<wd:Calendar_Date>2017-07-10-07:00</wd:Calendar_Date>
<wd:Time_Type wd:Descriptor="Hours Worked">
<wd:ID wd:type="WID">da128ce5a1dc103f5656dad4dad70868</wd:ID>
<wd:ID wd:type="Time_Code_Reference_ID">CA Hours Worked In/Out</wd:ID>
</wd:Time_Type>
<wd:Calculated_Quantity>4.75</wd:Calculated_Quantity>
</wd:Time_Blocks_for_Worker>
<wd:Time_Blocks_for_Worker>
<wd:Day_of_the_Week>Monday</wd:Day_of_the_Week>
<wd:Calendar_Date>2017-07-10-07:00</wd:Calendar_Date>
<wd:Time_Type wd:Descriptor="Hours Worked">
<wd:ID wd:type="WID">da128ce5a1dc103f5656dad4dad70868</wd:ID>
<wd:ID wd:type="Time_Code_Reference_ID">CA Hours Worked In/Out</wd:ID>
</wd:Time_Type>
<wd:Calculated_Quantity>4.083333</wd:Calculated_Quantity>
</wd:Time_Blocks_for_Worker>
<wd:Time_Blocks_for_Worker>
<wd:Day_of_the_Week>Tuesday</wd:Day_of_the_Week>
<wd:Calendar_Date>2017-07-11-07:00</wd:Calendar_Date>
<wd:Time_Type wd:Descriptor="Hours Worked">
<wd:ID wd:type="WID">da128ce5a1dc103f5656dad4dad70868</wd:ID>
<wd:ID wd:type="Time_Code_Reference_ID">CA Hours Worked In/Out</wd:ID>
</wd:Time_Type>
<wd:Calculated_Quantity>4.75</wd:Calculated_Quantity>
</wd:Time_Blocks_for_Worker>
<wd:Time_Blocks_for_Worker>
<wd:Day_of_the_Week>Tuesday</wd:Day_of_the_Week>
<wd:Calendar_Date>2017-07-11-07:00</wd:Calendar_Date>
<wd:Time_Type wd:Descriptor="Hours Worked">
<wd:ID wd:type="WID">da128ce5a1dc103f5656dad4dad70868</wd:ID>
<wd:ID wd:type="Time_Code_Reference_ID">CA Hours Worked In/Out</wd:ID>
</wd:Time_Type>
<wd:Calculated_Quantity>4.5</wd:Calculated_Quantity>
</wd:Time_Blocks_for_Worker>
私はをループに以下のようにXSLをしようとして比較しています。
<Calculated_Quantity>
<xsl:for-each select="wd:Time_Blocks_for_Worker">
<xsl:choose>
<xsl:if test="translate(wd:Day_of_the_Week, $smallcase, $uppercase) = wd:Day_of_the_Week">
<xsl:when test="wd:Day_of_the_Week = wd:Day_of_the_Week">
<xsl:value-of
select="sum(wd:Time_Blocks_for_Worker/wd:Calculated_Quantity_1 | wd:Time_Blocks_for_Worker/wd:Calculated_Quantity)"/>
</xsl:when>
</xsl:choose>
</xsl:for-each>
</Calculated_Quantity>
これは*グループ化の質問です。検索を行う - おそらく最も頻繁に質問されるXSLTの質問です。 XSLT 1.0または2.0では答えが異なることに注意してください。 –