模板扩展语法

模板扩展语法是一个MediaWiki扩展,包含多个解析函数解释器。本扩展的典型语法是:

{{#函数名: 参数1 | 参数2 | 参数 3 …}}

目前有预定义的函数:exprififeqifexprswitchrand暂时被废除)。

各函数名都对大小写不敏感。

语句中的空格、换行等空白字符将被省略。

目录


[编辑] 函数


[编辑] 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:和#之间不能有空格,才可以正常工作。


[编辑] 表格

模板扩展函数中由于使用了“|”管道符做参数分隔符,所以不能包括表格所需要的“|”符。要想在输出中包含表格,可以通过以下两个办法达到:

  1. 通过嵌套模板来达到隐藏“|”的目的。比如:Template:Tl
  2. 使用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号)

中华人民共和国卫生部

公告

2008年第9号

  根据《中华人民共和国食品卫生法》和《食品添加剂卫生管理办法》的规定,批准附表所列D-异抗坏血酸钠等17种食品添加剂扩大使用范围、使用量。
  特此公告。
                              二○○八年四月七日

 

扩大使用范围、使用量的食品添加剂

类别

添加剂名称

使用范围

最大使用量(g/kg)

抗氧化剂

D-异抗坏血酸钠

凝胶糖果

1.0(以抗坏血酸计)

漂白剂

焦亚硫酸钠

酱腌菜

0.1(以二氧化硫残留量计)

着色剂

焦糖色(不加氨生产)

膨化食品

2.5

栀子黄

饼干

1.5

核黄素

固体复合调味料

0.05

姜黄

焙烤食品

按生产需要适量使用

叶绿素铜钠盐

叶绿素铜钾盐

焙烤食品、饮料类(除包装饮用水)

0.5

胭脂虫红

焙烤食品、果酱、饮料类(除包装饮用水)、植脂奶油

0.6

胭脂树橙

焙烤食品、冷冻饮品(除外食用冰)、果酱、果冻、饮料类(除包装饮用水)

0.6

乳化剂

硬脂酰乳酸钠

蛋白饮料类

2.0

特殊用途饮料(包括“运动饮料”、“营养素饮料”等)

2.0

 

 

风味饮料(包括果味饮料、乳味、茶味及其他味饮料

2.0

茶、咖啡、植物饮料类

2.0

水分保持剂

三聚磷酸钠

生湿面制品

5.0

甜味剂

乙酰磺胺酸钾(安赛蜜)

食醋、蚝油、酱类、复合调味料

0.5

增稠剂

黄原胶

凝胶糖果

10.0

海藻酸丙二醇酯

咖啡饮料

3.0

羟丙基淀粉醚

各类食品(注)

按生产需要适量使用

酸处理淀粉

各类食品(注)

按生产需要适量使用

  注:各类食品不包括附件所列食品类别

附件:

各类食品不包括的食品类别