MediaWiki解析器函数#if用于未定义的模板参数

时间:2014-10-09 08:45:16

标签: parsing mediawiki

我有一个安装了Semantic MediaWiki扩展的MediaWiki站点。我想测试字符串是否为空。为此我做了:

{{#if: {{{transcript.lncrna}}} | Yes | No}}

显然,{{{transcript.lncrna}}}是空的,它什么都没有。但是,解析器函数#if告诉我是答案。

有什么问题?

1 个答案:

答案 0 :(得分:6)

当涉及MediaWiki解析器函数时,变量为空,变量未定义are two different things。在您的情况下{{{transcript.lncrna}}}很可能没有定义。然后,MediaWiki将按照你试图写出文本“{{{transcript.lncrna}}}”来对待它,当然,这会使if语句返回true。

要检查参数是否为空,您需要添加一个空的默认值,编写{{{transcript.lncrna|}}}(注意水平条):

{{#if: {{{transcript.lncrna|}}} | Yes | No}}

这是一个具有不同可能性的表

             value of {{{param}}}: undefined | nothing | whitespace | something
--------------------------------------------------------------------------------
{{#if: {{{param|}}} | Yes | No}} |    No     |   No    |     No     |    Yes
{{#if: {{{param}}}  | Yes | No}} |    Yes    |   No    |     No     |    Yes