Я хочу, чтобы страница отображала A, B, C, D в зависимости от возвращаемого значения из значения XML (1,2,3,4).Мои подходы с помощью JavaScript или XSLT: выбрать.Я хочу знать, какой путь лучше и почему?Могу ли я сделать этот регистр в коде .cs (хорошо или плохо)?Должен ли я код JavaScript в XSLT?Может ли сообщество, пожалуйста, посоветовать?Спасибо.
Ниже приведен код.
Способ Javascript (этот работает):
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt" xmlns:js="urn:custom-javascript">
<xsl:template match="page">
<msxsl:script language="JavaScript" implements-prefix="js">
<![CDATA[
function translateSkillLevel(level)
{
switch (level)
{
case 0: return "Level 1";
case 1: return "Level 2";
case 2: return "Level 3";
}
return "unknown";
}
]]>
</msxsl:script>
<div id="skill">
<table border="0" cellpadding="1" cellspacing="1">
<tr>
<th>Level</th>
</tr>
<xsl:for-each select="/page/Skill">
<tr>
<td>
<!-- difference here -->
<script type="text/javascript">
document.write(translateSkillLevel(<xsl:value-of select="@level"/>));
</script>
</td>
</tr>
</xsl:for-each>
</table>
</div>
</xsl:template>
</xsl:stylesheet>
Способ Javascript (этот не работает, получение неопределенного тега js):
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt" xmlns:js="urn:custom-javascript">
<xsl:template match="page">
<msxsl:script language="JavaScript" implements-prefix="js">
<![CDATA[
function translateSkillLevel(level)
{
switch (level)
{
case 0: return "Level 1";
case 1: return "Level 2";
case 2: return "Level 3";
}
return "unknown";
}
]]>
</msxsl:script>
<div id="skill">
<table border="0" cellpadding="1" cellspacing="1">
<tr>
<th>Level</th>
</tr>
<xsl:for-each select="/page/Skill">
<tr>
<td>
<!-- difference here -->
<xsl:value-of select="js:translateSkillLevel(string(@level))"/>
</td>
</tr>
</xsl:for-each>
</table>
</div>
</xsl:template>
</xsl:stylesheet>
XSLT путь:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="page">
<div id="skill">
<table border="0" cellpadding="1" cellspacing="1">
<tr>
<th>Level</th>
</tr>
<xsl:for-each select="/page/Skill">
<tr>
<td>
<xsl:choose>
<xsl:when test="@level = 0">
Level 1
</xsl:when>
<xsl:when test="@level = 1">
Level 2
</xsl:when>
<xsl:when test="@level = 2">
Level 3
</xsl:when>
<xsl:otherwise>
unknown
</xsl:otherwisexsl:otherwise>
</xsl:choose>
</td>
</tr>
</xsl:for-each>
</table>
</div>
</xsl:template>
</xsl:stylesheet>
РЕДАКТИРОВАТЬ: Кроме того, у меня есть несколько встроенных функций JavaScript для отправки формы.
<input type="submit" onclick="javascript:document.forms[0].submit();return false;"/>