模板扩展语法是一个MediaWiki扩展,包含多个解析函数解释器。本扩展的典型语法是:
- {{#函数名: 参数1 | 参数2 | 参数 3 …}}
目前有预定义的函数:expr,if,ifeq,ifexpr,switch(rand暂时被废除)。
各函数名都对大小写不敏感。
语句中的空格、换行等空白字符将被省略。
目录 |
[编辑] 函数
[编辑] expr
- 参见:计算。
expr函数,计算数学表达式。语法为:
{{ #expr: 表达式 }}
表达式支持的运算符有:
| 运算符 | 名称 | 优先级 | 元数 | 结合性 | 样例 |
|---|---|---|---|---|---|
| 正 | 9 | 1 | 右 | {{#expr: 7}} = 7 | |
| - | 负 | 9 | 1 | 右 | {{#expr: - 7}} = -7 |
| not | 逻辑非 | 9 | 1 | 右 | {{#expr: not 7}} = 0 |
| * | 乘 | 8 | 2 | 左 | {{#expr: 30 * 7}} = 210 |
| / | 除 | 8 | 2 | 左 | {{#expr: 30 / 7}} = 4.28571428571 |
| div | 除 | 8 | 2 | 左 | {{#expr: 30 div 7}} = 4.28571428571 |
| mod | 模 | 8 | 2 | 左 | {{#expr: 30 mod 7}} = 2 |
| 加 | 6 | 2 | 左 | {{#expr: 30 7}} = 37 | |
| - | 减 | 6 | 2 | 左 | {{#expr: 30 - 7}} = 23 |
| round | 舍入 | 5 | 2 | 左 | {{#expr: 30 / 7 round 7}} = 4.2857143 |
| = | 等于 | 4 | 2 | 左 | {{#expr: 30 = 7}} = 0 |
| < | 小于 | 4 | 2 | 左 | {{#expr: 30 < 7}} = 0 |
| > | 大于 | 4 | 2 | 左 | {{#expr: 30 > 7}} = 1 |
| <= | 小于等于 | 4 | 2 | 左 | {{#expr: 30 <= 7}} = 0 |
| >= | 大于等于 | 4 | 2 | 左 | {{#expr: 30 >= 7}} = 1 |
| <> | 不等于 | 4 | 2 | 左 | {{#expr: 30 <> 7}} = 1 |
| != | 不等于 | 4 | 2 | 左 | {{#expr: 30 != 7}} = 1 |
| and | 逻辑与 | 3 | 2 | 左 | {{#expr: 30 and 7}} = 1 |
| or | 逻辑或 | 2 | 2 | 左 | {{#expr: 30 or 7}} = 1 |
round运算对运算数正负,位数正负都有不同的表现,参见下例。
逻辑运算符把假映射为0,把真映射为非0,且返回值只有0或1。
同一表达式中先计算高优先级运算。括号优先级高于一切。
[编辑] if
if函数是一个if-then-else结构。语法是:
{{#if: <判断字符串> | <then字符串> [| <else字符串> ]}}
若判断字符串为非空字符串(忽略前导或后缀空格),则函数返回then字符串,否则函数返回else字符串。else字符可被省略而不会造成错误,但函数在判断字符串为空时便会返回空字符串。
[编辑] ifeq
ifeq比较两个字符串,返回比较结果。语法为:
{{#ifeq: <字符串1> | <字符串2> [| <相等时返回的字符串> [| <不相等时返回的字符串> ]]}}
注意:两个空字符串是相等的。
[编辑] ifexpr
ifexpr计算数学表达式,并根据计算结果返回字符串。
{{ #ifexpr: <表达式> | <then字符串> [| <else字符串>] }}
若表达式经计算不为0,则函数返回then字符串,否则函数返回else字符串。表达式语法与expr<tt>相同。
[编辑] switch
<tt>switch将一个值与多个预设值比较,若有匹配时则返回指定字符串,即双射。语法是:
{{ #switch: <比较值>
| <预设值1> [= <结果1>]
| <预设值2> [= <结果2>]
| ...
| <预设值n> [= <结果n>]
| [#default = ]<缺省结果>
}}
switch将从从左往右逐一尝试,直到出现匹配。函数将返回第一个匹配值对应的结果,而忽略后面的匹配值。如果没有匹配,函数将返回缺省结果。如果缺省结果没有设置,函数将返回空串。
注意:“缺省结果”是最后一个没有等号的预设值或“#default”预设值对应的结果;如果期望把一个包含“=”号的字符串作为缺省结果,则必须采用“#default”预设值形式。例如:
#default = <span style="color:red;">red</span>
switch也可用作满射(多对一,避免重复设置结果)。即某预设值后未设置结果,这样如果该预设值与比较值匹配,则函数返回第一个有结果的预设值的结果。例如:
{{ #switch: <比较值>
| <预设值1>
| <预设值2>
| <预设值3> = <结果3>
| <缺省结果>
}}
如果比较值与预设值1或预设值2匹配,都将返回结果3。注意:“#default”后必须有“=”,但其它预设值可以使用“#default”的结果。
[编辑] ifexist
ifexist根据指定名称的页面是否存在,返回两个参数中的一个。
- 用法
- {{#ifexist:待测页面标题|存在文字|不存在文字}}
示例:
- {{#ifexist:test|有test页面|无test页面}} 得到 有test页面
- {{#ifexist:user:sex|该用户存在|该用户不存在}} 得到 该用户不存在
- {{#ifexist:Calculation|Yes|Oops}} 得到 Oops
[编辑] language
#language得到指定语言代码的该语言名称。
- {{#language:de}} 得到 Deutsch
- {{#language:en}} 得到 English
- {{#language:ja}} 得到 日本語
- {{#language:nl}} 得到 Nederlands
- {{#language:zh}} 得到 中文
- {{#language:zh-cn}} 得到 中文(中国大陆)
- {{#language:zh-tw}} 得到 中文(台灣)
- {{#language:zh-hk}} 得到 中文(香港)
- {{#language:zh-sg}} 得到 中文(新加坡)
[编辑] subst
应用subst:到模板扩展,必须在subst:和#之间不能有空格,才可以正常工作。
[编辑] 表格
模板扩展函数中由于使用了“|”管道符做参数分隔符,所以不能包括表格所需要的“|”符。要想在输出中包含表格,可以通过以下两个办法达到:
- 通过嵌套模板来达到隐藏“|”的目的。比如:Template:Tl
- 使用HTML语法。
[编辑] 安装
1、到http://meta.wikimedia.org/wiki/ParserFunctions下,下载.php文件(4个文件)
2、放到/extensions/ParserFunctions目录下;
3、修改localsettings.php文件,增加行require_once( "$IP/extensions/ParserFunctions/ParserFunctions.php" );
[编辑] 参见
扩大使用范围、使用量的食品添加剂(卫生部公告2008年第9号)
根据《中华人民共和国食品卫生法》和《食品添加剂卫生管理办法》的规定,批准附表所列D-异抗坏血酸钠等17种食品添加剂扩大使用范围、使用量。
特此公告。
二○○八年四月七日
