1

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

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

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

我将标签内嵌在 HTML 中,并使用document.write(). 但是我没有运气使动作响应 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”标签被替换为任何被指定的字段的内容(当然)。

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

如果是,我想在此处使用一个表示“是”的单个字符。否则我想在那里放一个不同的字符,表示“不是”。

我无法弄清楚如何将呈现的值纳入选择结构。

我尝试了类似的东西

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

但是 xsl 标记未被识别为这样。

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

4

2 回答 2

1

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

本答案所示:

一个更通用的 XPath 1.0 表达式,如果 $val 为 "x" 则生成字符串 $s1 ,如果 $val 为 "y" 则生成字符串 $s2 :

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
于 2013-05-08T00:16:53.753 回答
0

使用

substring('yx', 1 + (@fldNm = 'yes'), 1)

如果名为“fldNm”的(上下文节点的)属性的值为“yes”,则该表达式的求值产生字符“x”,否则求值产生字符“y”。

在这里,我们根据定义使用以下事实

 number(true()) = 1

 number(false()) = 0 
于 2013-05-08T02:36:33.490 回答