Javascript 基于xsl:value of有条件地显示2个char.s中的1个
我有一个来自SharePoint的值,即Javascript 基于xsl:value of有条件地显示2个char.s中的1个,javascript,html,xslt,moss,Javascript,Html,Xslt,Moss,我有一个来自SharePoint的值,即 这将有2个可能值中的1个:空字符串或“是”。这在SharePoint显示表单的中 如果值是空字符串,我想显示一个字符,但如果是“是”,我想显示另一个字符 我将一个标记与HTML内联,并使用document.write()。但我没有运气让这些行动符合fldNm的价值 我已经找到了很多例子,但它们与我正在尝试的是如此不同,以至于我无法理解它们 情况就是这样: 创建SharePoint自定义列表时,将为您创建3.aspx页面:newForm、editForm和
这将有2个可能值中的1个:空字符串或“是”。这在SharePoint显示表单的
中
如果值是空字符串,我想显示一个字符,但如果是“是”,我想显示另一个字符
我将一个标记与HTML内联,并使用document.write()
。但我没有运气让这些行动符合fldNm的价值
我已经找到了很多例子,但它们与我正在尝试的是如此不同,以至于我无法理解它们
情况就是这样:
创建SharePoint自定义列表时,将为您创建3.aspx页面:newForm、editForm和dispForm
这些.aspx页面加载了各种xsl和xslt功能。创建了几个xsl模板,其中一个模板包含使用.aspx时将显示的HTML。SharePoint将该模板命名为“dvt_1”。然后在
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>
答案是:如果(=‘是’){
文件。写('A');
}否则{
文件。写('B');
}
但是xsl标记本身没有被识别
我对xsl非常陌生,虽然我开始了解语法是如何实现的,但它对我来说仍然非常神秘。由于您没有向我们提供太多信息,这是我能给出的最好答案 如图所示: 一个更通用的XPath 1.0表达式,如果 $val为“x”,如果$val为“y”,则生成字符串$s2: 如果我正确理解你的问题,这个原则可以用来产生预期的答案。要了解这一点,请查看以下示例: 假设:
<?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>
<t>
<e fldNm="yes"/>
<e fldNm=""/>
</t>
The value is: a
The value is: b
- 值
应输出字符“yes”
“A”
- 值
应输出字符“
“b”
<?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>
<t>
<e fldNm="yes"/>
<e fldNm=""/>
</t>
The value is: a
The value is: b
因为你没有给我们提供太多的信息,这是我能给出的最好的答案 如图所示: 一个更通用的XPath 1.0表达式,如果 $val为“x”,如果$val为“y”,则生成字符串$s2: 如果我正确理解你的问题,这个原则可以用来产生预期的答案。要了解这一点,请查看以下示例: 假设:
<?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>
<t>
<e fldNm="yes"/>
<e fldNm=""/>
</t>
The value is: a
The value is: b
- 值
应输出字符“yes”
“A”
- 值
应输出字符“
“b”
<?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>
<t>
<e fldNm="yes"/>
<e fldNm=""/>
</t>
The value is: a
The value is: b
使用:
substring('yx', 1 + (@fldNm = 'yes'), 1)
number(true()) = 1
如果名为“fldNm”的属性(上下文节点)的值为“yes”,则此表达式的求值将生成字符“x”,否则求值将生成字符“y”
这里我们使用的事实是,根据定义:
substring('yx', 1 + (@fldNm = 'yes'), 1)
number(true()) = 1
及
使用:
substring('yx', 1 + (@fldNm = 'yes'), 1)
number(true()) = 1
如果名为“fldNm”的属性(上下文节点)的值为“yes”,则此表达式的求值将生成字符“x”,否则求值将生成字符“y”
这里我们使用的事实是,根据定义:
substring('yx', 1 + (@fldNm = 'yes'), 1)
number(true()) = 1
及
这不足以理解问题,也没有真正意义。值不是作为XSL标记“来自SharePoint”,它们(可能)位于您正在使用XSL转换的XML文档中。显示XML文档的相关部分和相应的XSL样式表。转到主要问题…这不足以理解问题,也没有真正意义。值不是作为XSL标记“来自SharePoint”,它们(可能)位于您正在使用XSL转换的XML文档中。显示XML文档的相关部分和相应的XSL样式表。转到主要问题……这是一个非常好的答案,非常简洁。但阿巴克的答案似乎更为详细,这也是我所用的。@BrianWren,是的,阿巴克从我的一个答案(引用他的话)中学到了这个更为普遍的技巧。但是,我建议只有在无法找到更专业、更高效的解决方案时才使用这种更通用的技术。在这种情况下,将两个子字符串(其中一个参数为1除以0)串联起来,对于一般XSLT程序员来说,这实在是太过冗长,效率低得多,复杂得多,而且很难理解。这是一个非常好的答案,而且非常简洁。但阿巴克的答案似乎更为详细,这也是我所用的。@BrianWren,是的,阿巴克从我的一个答案(引用他的话)中学到了这个更为普遍的技巧。但是,我建议只有在无法找到更专业、更高效的解决方案时才使用这种更通用的技术。在这种情况下,将两个子字符串(其中一个参数为1除以0)串联起来,对于一般XSLT程序员来说,这实际上是一种过度的拉伸,而且效率低得多,复杂得多,也难以理解。