MS RFC 9:查询模板的项标记

日期

2006/01/05

作者

史蒂夫·莱姆

联系

明尼苏达州第纳尔的史蒂夫·莱姆

状态

实施

版本

MAPServer 4.10

描述:通过查询模板公开的属性的即时处理仅限于几种形式的转义。这太局限了。如果能够将格式应用于属性(例如,截断小数或添加前缀),或者检测其为空或为空并呈现替代表示,则会更好。这个RFC描述了一个简单的方案,允许在发送给A用户之前对属性进行扩展处理。

这将涉及向模板处理器添加一个新的“item”标记。

受影响的文件

  • maptemplate.c=>添加标记处理器,更新查询模板处理器以使用标记处理器。

向后兼容性问题

不适用,新功能。公开属性的现有方法(例如,[attribute name]将继续工作,尽管我们可能会在某些时候将其标记为已弃用。

实施细节

“item”标记将具有以下属性。

  • 名称:要公开的属性的名称

  • 格式:包含标记$value的简单字符串,默认格式是任何处理的结果

  • nullformat:如果值为空则返回的字符串(长度=0)

  • UC:将字符串转换为大写

  • lc:将字符串转换为小写

  • SUBSTR:通过提供偏移量和可选长度(从2007年3月13日起未实现)来执行类似Perl的子字符串操作。

  • commfy:在数字字符串中添加逗号(12345将变为12345),注意,目前只支持北美符号。

  • 转义:要执行的转义类型(默认为HTML),允许的值为HTML、URL、无。

  • 精度:小数点后要保留的小数位数

  • pattern:必须验证(针对列值)才能处理标记的正则表达式。

我们可以在以后添加简单的case-statement支持,但上面的内容将满足我目前的需求。

实例

不显示小数点,并确认:

[项目名称=foo commity=真精度=0]-12345.6789输出为12345

条件显示项(如果其值包含“bar”):

[项目名称=foo模式=条]

转义要包含在URL中的值,并转换为大写:

[item name=foo uc=true escape=url]-“hello world”输出为“hello%20world”

对项目应用自定义格式,如果项目为空,则显示消息:

[项目名称=foo format=“foo=$value”nullformat=“找不到foo”]

笔记

项目标记在其他列标记(如[foo])之后处理,因此您可以在项目标记本身中包含替换字符串。

臭虫识别码

1636

投票历史

+1:酸橙,莫里塞特,巴特勒+0:吉利,温热丹