使用来自不同父节点的节点值进行XSL计算

时间:2015-08-24 21:47:32

标签: xml xslt xhtml xslt-1.0

我已经在这方面工作了几个小时,我相信你,社区,将能够提出以下逻辑:

XML节点

<Main>
 <Info>
  <Class Discipline="PHIL" Number="100" Gpa_grade_pts="3" Id_num="0030" Gpa_credits="3" >
  <Class Discipline="HIST" Number="103" Gpa_grade_pts="6" Id_num="0005" Gpa_credits="3" >
  <Class Discipline="HIST" Number="262" Gpa_grade_pts="9" Id_num="0026" Gpa_credits="3" >
 </Info>
 <Section>
  <Class Discipline="HIST" Number="103" Credits="3" Id_num="0030" Code="BAD"/>
  <Class Discipline="HIST" Number="111" Credits="3" Id_num="0005" Code="GOOD"/>
  <Class Discipline="HIST" Number="262" Credits="3" Id_num="0026" Code="BAD"
 </Section>
</Main>

我需要基本上循环查找/ Section / Class / Code =“BAD”的课程,并从以下XSL(GPA)计算中排除这些...

XSL

 <xsl:variable name="IdNum">
  <xsl:value-of select="Section/Class[@Code = 'BAD']/@Id_num" />  
 </xsl:variable>  

 <xsl:variable name="GpaGradePts">
  <xsl:value-of select="sum(Info/Class[@Id_num != $IdNum]/@Gpa_grade_pts)" />
 </xsl:variable>

 <xsl:variable name="GpaCredits">
  <xsl:value-of select="sum(Info/Class[@Id_num != $IdNum]/@Gpa_credits)" />
 </xsl:variable>

 <xsl:variable name="Gpa">
  <xsl:value-of select='format-number($GpaGradePts div $GpaCredits, "#.00")' /> <!-- New GPA -->
 </xsl:variable>

 <!-- Display the new value -->

 <xsl:value-of select="$Gpa" />

摘要:

我需要比较XML的每个相应部分的Id_num节点,确定哪些代码是“BAD”..然后从GPA计算中排除这些课程。我的逻辑只有在返回单个/ Section / Class [@ CODE ='BAD'] / @ Id_num时才有效,因此我需要在计算中为所有“BAD”课程找到一种方法!=(不包括在内) 。

使用xsl版本1.0。

0 个答案:

没有答案