XSLTは関数型言語です。変数は宣言されたときに値が割り当てられ、その値は決して変更されません。
XSLTでは、思考を形作っているように見える他のプログラミング言語とは異なり、各学生のすべてのマーク、または40を超えるすべてのマークを計算しません。代わりに、その変数の値を指定します。
<!--* calculate the total sum of marks awarded to all students.
* (This makes no sense, but it is what the description says.
* Mine not to reason why.)
*-->
<xsl:variable name="total-marks"
select="sum(//student/subject/@mark)"/>
<!--* calculate the total sum of marks greater than 40 awarded
* to all students.
* (This also makes no sense, but it is again what the description
* appears to say. Glad this is someone else's problem, not mine.)
*-->
<xsl:variable name="total-marks-over-40"
select="sum(//student/subject/@mark[. > 40])"/>
ような何か私は本当にあなたが何をしているかあなたの説明から理解していないので、これらの変数が正しいことを計算していない可能性があります。私はあなたが後で、平均マークと40を超える平均マークを計算するためにこれらを使用し、与えられたマークの数と40以上のマークの数でそれらを割ることによって、それが理にかなっていると思います。
これらの変数は、あなたが念頭に置いておいたXMLの構造に合っていないことはほとんどありません。与えられた標本表現は、各生徒が要素で表され、数字がmark
の子どもの中にその生徒に与えられた数字を表すsubject
の子を含むと仮定しています。
作業したいXMLのサンプルを提供する場合は、多くの役に立ちます。 –
入力XMLのサンプルと予想される出力が、外部サイトの画像ではなく質問内で提供された場合にも役立ちます。 –