Hello,
Further referring to my earlier GROUPING q to combine two nodes to be
treated as one unique node, based on the feedback (Thanks Mr David) I
have modified the code to use translate() as suggested and it seems to
be working, only later to find, it DOES NOT work on some conditions.
Very strange and I do not have any clue! Not sure whether my code is
flawed. Please can someone have a look?
Basically, the xml has 5 main assessment types - Exam, Test, Quiz,
Survey and NotSet and we treat NotSet as Exam by using
"translate(assessmentType,'NotSet','Exam')", wherever required.
The translate works ok as expected if I try:
translate(assessmentType,'Quiz','Test')
translate(assessmentType,'Quiz','Exam')
translate(assessmentType,'Survey','Exam')
translate(assessmentType,'Survey','Quiz')
and fails when doing
translate(assessmentType,'NotSet','Exam') -> Is what needed
translate(assessmentType,'Quiz','Survey')"/>
Stripped down xslt:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html"/>
<xsl:key name="schedule-by-assessmentType"
match="activeSchedule" use="translate(assessmentType,'NotSet','Exam')"/>
<xsl:variable name="activeScheduleNodes"
select="//activeSchedule"/>
<xsl:variable name="examCount"
select="count($activeScheduleNodes[assessmentType = 'Exam']) +
count($activeScheduleNodes[assessmentType = 'NotSet'])"/>
<xsl:variable name="testCount"
select="count($activeScheduleNodes[assessmentType = 'Test'])"/>
<xsl:variable name="quizCount"
select="count($activeScheduleNodes[assessmentType = 'Quiz'])"/>
<xsl:variable name="surveyCount"
select="count($activeScheduleNodes[assessmentType = 'Survey'])"/>
<xsl:template match="messageResponse">
<html>
<body>
<xsl:apply-templates
select="//activeSchedule[generate-id(.) =
generate-id(key('schedule-by-assessmentType',
translate(assessmentType,'NotSet','Exam'))[1])]"/>
</body>
</html>
</xsl:template>
<xsl:template match="activeSchedule">
<xsl:choose>
<xsl:when test="assessmentType = 'Exam' and
$examCount > 0">
Exams (<xsl:value-of
select="$examCount"/>)
<xsl:call-template
name="selectAssessmentList"/>
</xsl:when>
<xsl:when test="assessmentType = 'NotSet' and
$examCount > 0">
<!--THIS CONDITION EXECUTED? WHY? NOT
REQD, TEST-->
Notsetsss (<xsl:value-of
select="$examCount"/>)
<xsl:call-template
name="selectAssessmentList"/>
</xsl:when>
<xsl:when test="assessmentType = 'Test' and
$testCount > 0">
Tests (<xsl:value-of
select="$testCount"/>)
<xsl:call-template
name="selectAssessmentList"/>
</xsl:when>
<xsl:when test="assessmentType = 'Quiz' and
$quizCount > 0">
Quizzes (<xsl:value-of
select="$quizCount"/>)
<xsl:call-template
name="selectAssessmentList"/>
</xsl:when>
<xsl:when test="assessmentType = 'Survey' and
$surveyCount > 0">
Surveyes (<xsl:value-of
select="$surveyCount"/>)
<xsl:call-template
name="selectAssessmentList"/>
</xsl:when>
</xsl:choose>
</xsl:template>
<xsl:template name="selectAssessmentList">
<table border="1">
<tr bgcolor="#EAEAEA" align="center">
<th>Titles </th>
</tr>
<xsl:for-each
select="key('schedule-by-assessmentType',
translate(assessmentType,'NotSet','Exam'))">
<xsl:sort select="scheduleName"/>
<tr>
<td>
<xsl:value-of
select="scheduleName"/>
</td>
</tr>
</xsl:for-each>
</table>
</xsl:template>
</xsl:stylesheet>
Stripped down xml:
<RequestResult>
<messageResponse xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="">
<action>AssessmentList</action>
<data>
<request>
<activeScheduleCollection>
<activeSchedule>
<assessmentType>Exam</assessmentType>
<scheduleName>Exam
One</scheduleName>
</activeSchedule>
<activeSchedule>
<assessmentType>NotSet</assessmentType>
<scheduleName>`NotSet`
type Assessment</scheduleName>
</activeSchedule>
<activeSchedule>
<assessmentType>Exam</assessmentType>
<scheduleName>Exam 1,
unlimited</scheduleName>
</activeSchedule>
<activeSchedule>
<assessmentType>Exam</assessmentType>
<scheduleName>Exam 2,
unlimited, resume possible</scheduleName>
</activeSchedule>
<activeSchedule>
<assessmentType>Quiz</assessmentType>
<scheduleName>Quiz 1,
unlimited</scheduleName>
</activeSchedule>
<activeSchedule>
<assessmentType>Survey</assessmentType>
<scheduleName>Survey 2,
unlimited</scheduleName>
</activeSchedule>
<activeSchedule>
<assessmentType>Test</assessmentType>
<scheduleName>Financial
test Accounting</scheduleName>
</activeSchedule>
</activeScheduleCollection>
</request>
</data>
</messageResponse>
</RequestResult>
Thanks in advance.
Karl R
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--