javascript - 根据 xsl :value-of 有条件地显示 2 个字符中的 1 个

标签 javascript html xslt moss

我有一个来自 SharePoint 的值 <xsl:value-of select="@fldNm" />

这将具有 2 个可能值中的 1 个:空字符串或“yes”。这是在<xsl:template name="dvt_1.rowedit">内SharePoint 显示表单的一部分。

如果该值为空字符串,我想显示一个字符,但如果它是“yes”,我想显示另一个字符。

我将一个标签与 HTML 内联,并使用 document.write() 。但我没有运气让 Action 响应 fldNm 的值。

我找到了很多例子,但它们与我想要做的事情有很大不同,我无法理解它们。

情况是这样的:

当您创建 SharePoint 自定义列表时,系统会为您创建 3 个 .aspx 页面:newForm、editForm 和 dispForm。

这些 .aspx 页面加载了各种 xsl 和 xslt 功能。创建了多个 xsl 模板,其中之一包含使用 .aspx 时将显示的 HTML。该模板被 SharePoint 命名为“dvt_1”。然后在 <xsl:for-each select="$Rows"> 中调用该模板。 xsl结构。

在dispForm页面上调用的模板中,每个数据都通过使用来显示

    <td>
       <div>
            <xsl:value-of select="@fieldName" />
       </div>
    </td>

当页面呈现时,“value-of”标签将替换为(当然)指定的任何字段的内容。

就我而言,由于设计要求文档,我询问的字段将包含"is"或“”。

如果是,我想在其中放置一个字符来表示"is"。否则我想在那里放一个不同的字符,表示“不是”。

我不知道如何将渲染值放入选择构造中。

我尝试过类似的事情

    <td>
    The answer is: <script> if (<xsl:value-of select="@fieldName" /> == 'yes') {
    document.write('A');
    } else {
    document.write('B');
    }
    </script>
    </td>

但是 xsl 标记未被识别。

我对 xsl 很陌生,虽然我开始了解语法是如何完成任务的,但它对我来说仍然很神秘。

最佳答案

由于您没有向我们提供太多信息,这是我能给出的最佳答案。

this answer所示:

A more general XPath 1.0 expression that produces the string $s1 if $val is "x" and produces the string $s2 if $val is "y" :

concat(substring($s1, 1 div ($val = "x")),
       substring($s2, 1 div ($val = "y"))
      )

如果我正确理解你的问题,这个原则可以用来生成预期的答案。要了解这一点,请查看以下示例:

假设:

  • “yes”应输出字符“a”
  • "" 值应输出字符 "b"

当此 XSLT(使用前面提到的 XPath)时:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
  <xsl:output omit-xml-declaration="yes" indent="yes" method="text"/>
  <xsl:strip-space elements="*"/>

  <xsl:template match="e">
    <xsl:text>The value is: </xsl:text>
    <xsl:value-of
      select="concat(substring('a', 1 div (@fldNm = 'yes')), 
                     substring('b', 1 div (@fldNm = ''))
              )"/>
    <xsl:text/>
  </xsl:template>

</xsl:stylesheet>

...应用于以下示例 XML:

<t>
  <e fldNm="yes"/>
  <e fldNm=""/>
</t>

...产生了想要的结果:

The value is: a
The value is: b

关于javascript - 根据 xsl :value-of 有条件地显示 2 个字符中的 1 个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16428346/

相关文章:

php - MySQL 和 BLOB 字段无法从 PHP 上传/显示图像(但它可以手动工作)/二进制/十六进制转储?

jquery - 使用 AddThis HTML 插件的总社交计数

xslt - 哪个 XSLT 处理器实际上利用了并行处理?

xslt - 如何在 XSLT 1.0 中获取当前日期和时间

xml - 所见即所得的 XML 编辑器(基于 DTD 或 RelaxNG 或 XSD 的语法)

javascript - 保存和加载 jsPlumb 流程图,包括精确的 anchor 和连接

javascript - 将工具提示添加到 d3 散点图

javascript - 在一行代码中用扩展语法替换数组条目?

javascript - 关于 Mozilla 的 Array.prototype.indexOf 中代码的问题

javascript - 浏览器调整大小时,大图像会移动