我有一个来自 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/