我有包含大学课程信息的 XML。课程按标题、课程编号和总学分显示。
My XSLT 按学习领域对数据进行分组,然后按课程编号列出课程,并提供课程描述和总学分。一切正常,但我想调整学分的最终显示。
每个班级至少有 1-4 个学分。有些课程有最大的学分数。
我的 XSLT 会同时提取最小信用<CRSMINCRED1>
和最大信用(<CRSMAXCRED1>
如果存在)。
然后,XSLT 构建最终显示,使其显示为以下之一:
当只有类数据功能时<CRSMINCRED1>
,显示如下:“1 学时”“2 学时”“3 学时”“4 学时”
当课程数据同时具有这两种功能时 <CRSMINCRED1>
,<CRSMAXCRED1>
显示如下:“1 到 4 学分”。
一切都很好,除了第一项。当课程只有“1”个最低学分而没有最高学分时,我希望显示为:
“1学分”
我试图做出“变量”和“if”语句但没有成功。
这是一些示例 XML:
<?xml version="1.0" encoding="UTF-8"?>
<CrystalReport>
<Details Level="1">
<Section SectionNumber="0">
<CRSTITLE1>Clinical Applications of CT I</CRSTITLE1>
<DEPTSDESC1>Diagnostic Medical Imaging</DEPTSDESC1>
<CRSNO1>2511</CRSNO1>
<CRSMINCRED1>3</CRSMINCRED1>
<CRSMAXCRED1/>
</Section>
</Details>
<Details Level="1">
<Section SectionNumber="0">
<CRSTITLE1>Clinical Applications of CT II</CRSTITLE1>
<CRSDEPTS1>DMI</CRSDEPTS1>
<DEPTSDESC1>Diagnostic Medical Imaging 2</DEPTSDESC1>
<CRSNO1>2512</CRSNO1>
<CRSMINCRED1>1</CRSMINCRED1>
<CRSMAXCRED1>4</CRSMAXCRED1>
</Section>
</Details>
<Details Level="1">
<Section SectionNumber="0">
<CRSTITLE1>Clinical Applications of CT III</CRSTITLE1>
<CRSDEPTS1>DMI</CRSDEPTS1>
<DEPTSDESC1>Diagnostic Medical Imaging 3</DEPTSDESC1>
<CRSNO1>2513</CRSNO1>
<CRSMINCRED1>1</CRSMINCRED1>
<CRSMAXCRED1/>
</Section>
</Details>
</CrystalReport>
这是我正在尝试使用的 XSLT 的一部分:
<xsl:template match="CrystalReport">
...
<xsl:apply-templates select="Section/CRSMINCRED1|Section/CRSMAXCRED1"/>
</xsl:template>
<xsl:template match="Section/CRSMINCRED1">
<xsl:if test=". = 1">
<mincredit><xsl:value-of select="."/></mincredit><xsl:text> credit hour</xsl:text></xsl:if>
<xsl:if test=". > 1">
<mincredit><xsl:value-of select="."/></mincredit><xsl:text> credit hours</xsl:text></xsl:if>
</xsl:template>
<xsl:template match="Section/CRSMAXCRED1[string-length() != 0]">
<xsl:text> to </xsl:text><maxcredits><xsl:value-of select="normalize-space(.)" /></maxcredits><xsl:text> credit hours</xsl:text>
</xsl:template>
</xsl:stylesheet>
此样式表生成我想要的内容,直到课程同时显示最小和最大学分,然后我得到以下显示:“1 学分到 4 学分”
任何帮助将不胜感激。