javascript - 在 XSLT 中进行大小写选择的良好编码风格

标签 javascript asp.net xslt

我想让一个页面根据 XML 值 (1,2,3,4) 的返回值显示 A、B、C、D。我的方法是通过 javascript 或 XSLT:choose。我想知道哪种方法更好,为什么?我可以在 .cs 代码中进行大小写选择吗(好还是坏)?我应该在 XSLT 中编写 javascript 代码吗?社区可以指教吗?谢谢。

下面是代码。

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;"/>

最佳答案

在这两者中,我肯定会选择 XSLT 方式。无需为此调用整个脚本引擎。

关于javascript - 在 XSLT 中进行大小写选择的良好编码风格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4905152/

相关文章:

javascript - 我需要使用 AJAX Post 声明结果类型吗?

javascript - Sharepoint Javascript (_sp) 无法在上传到客户端 Web 部件库的文件中运行

asp.net - Bower 与 Visual Studio 发布

javascript - 如何将变量传递给 asp.net 中的外部 JS 文件?

xslt - xsl:当两个节点相等时,显示第一个节点的子节点

javascript - 如何在 JavaScript 脚本中创建 HTML 表格

javascript - JS getElementById 带有空字符串 : Invalid procedure call or argument

c# - 使用 Exchange Web 服务 API 提取 Exchange 2007 公共(public)日历约会

oracle - 使用PL/SQL Developer插入时出现问题

java - XSLT 1 : XPath - select/extract a number from a string, 带默认值