2014-10-09 67 views
4

我有一个安装了Semantic MediaWiki扩展的MediaWiki站点。我想测试一个字符串是否为空。对于我这样做:MediaWiki解析器函数#if用于未定义的模板参数

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

显然,{{{transcript.lncrna}}}为空,它不包含任何内容。但是,解析器函数#if告诉我“是”作为答案。

出了什么问题?

回答

5

变量是空的,和可变被未定义are two different things,当涉及到MediaWiki解析器功能。在你的情况{{{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