本节介绍一般语法规则并列出 Dreamweaver 用于指定模板和基于模板的文档中区域的 HTML 注释标签。当您插入模板对象时,Dreamweaver 会自动在代码中插入模板标签。
注意: Dreamweaver 使用 HTML 注释标签定义模板区域,所以基于模板的文档依然是有效的 HTML 文件。
一般语法规则
下面是一般语法规则:
1.无论哪里出现空格,都可以用任何数量的空白(空格、制表符和换行符)代替。除了在注释开头和结尾,空白都是强制性的。
2.可以以任何顺序给出属性。例如,在 TemplateParam 中,可以在名称之前指定类型。
3.注释和属性名称是区分大小写的。
4.所有属性必须用引号引起来。可以使用单引号或双引号。
模板标签
Dreamweaver 使用以下模板标签:
<br>
<!-- TemplateBeginEditable name="..." --> <br>
<!-- TemplateEndEditable --><br>
<!-- TemplateParam name="..." type="..." value="..." --><br>
<!-- TemplateBeginRepeat name="..." --> <br>
<!-- TemplateEndRepeat --><br>
<!-- TemplateBeginIf cond="..." --><br>
<!-- TemplateEndIf --><br>
<!-- TemplateBeginPassthroughIf cond="..." --><br>
<!-- TemplateEndPassthroughIf --><br>
<!-- TemplateBeginMultipleIf --><br>
<!-- TemplateEndMultipleIf --><br>
<!-- TemplateBeginPassthroughMultipleIf --><br>
<!-- TemplateEndPassthroughMultipleIf --><br>
<!-- TemplateBeginIfClause cond="..." --><br>
<!-- TemplateEndIfClause --><br>
<!-- TemplateBeginPassthroughIfClause cond="..." --><br>
<!-- TemplateEndPassthroughIfClause --><br>
<!-- TemplateExpr expr="..." --> (equivalent to @@...@@) <br>
<!-- TemplatePassthroughExpr expr="..." --><br>
<!-- TemplateInfo codeOutsideHTMLIsLocked="..." --><br>实例标签
Dreamweaver 使用以下实例标签:
<br>
<!-- InstanceBegin template="..." codeOutsideHTMLIsLocked="..." --><br>
<!-- InstanceEnd --><br>
<!-- InstanceBeginEditable name="..." --><br>
<!-- InstanceEndEditable --><br>
<!-- InstanceParam name="..." type="..." value="..." passthrough="..." --><br>
<!-- InstanceBeginRepeat name="..." --><br>
<!-- InstanceEndRepeat --><br>
<!-- InstanceBeginRepeatEntry --><br>
<!-- InstanceEndRepeatEntry --><br>模板表达式语言
模板表达式语言是 JavaScript] 的一个小子集,并使用 JavaScript 语法和优先级规则。可以使用 JavaScript 运算符来编写这样的表达式:
@@(firstName+lastName)@@
支持下列功能和运算符:
1.数字文本、字符串文本(仅限于双引号语法)和布尔值文本(true 或 false)
2.变量引用(请参见本节后面的定义变量列表)
3.域引用(“点”运算符)
4.一元运算符:+、-、~、!
5.二元运算符:+、-、*、/、%、&、|、^、&&、||、<、<=、>、>=、==、!=、<<、>>
6.条件运算符:?:
7.括号:()
使用下列数据类型:布尔型、IEEE 64 位浮点型、字符串和对象。Dreamweaver 模板不支持使用 JavaScript“空”类型或“未定义”类型。而且不允许将标量类型隐式转换为对象;因此,表达式 "abc".length 将引起错误,而不是得出值 3。
唯一可用的对象是由表达式对象模型定义的对象。定义了下列变量:
_document:包含文档级模板数据,模板中每个参数都有一个字段。
_repeat仅为出现在重复区域内的表达式定义。提供关于区域的内置信息:
_index 当前项的数字索引(从 0 开始)
_numRows 该重复区域内的总项数
_isFirst 如果当前项是其重复区域内的第一项,则为真
_isLast 如果当前项是其重复区域内的最后一项,则为真
_prevRecord 前一项的 _repeat 对象。访问该区域内第一项的此属性是一个错误。
_nextRecord 下一项的 _repeat 对象。访问该区域内最后一项的此属性是一个错误。
_parent 在嵌套的重复区域内,该项给出封闭(外层)重复区域的 _repeat 对象。在嵌套的重复区域外部访问此属性是一个错误。
在表达式计算过程中,_document 对象和 _repeat 对象的所有域都默认为可用。例如,为访问文档的标题参数,可以输入 title 而不是 _document.title。
在出现域冲突的情况下,_repeat 对象的域优先于 _document 对象的域。因此,不需要明确引用 _document 或 _repeat,除非可能需要在重复区域内使用 _document 引用被重复区域参数隐藏了的文档参数。
使用嵌套的重复区域时,只有最内层重复区域的域为默认为可用。外层区域必须使用 _parent 明确引用。
模板代码中的多重假设条件
您可以为假设和多重假设条件定义模板表达式。下面的示例讲述了如何定义名为“Dept”的参数、如何设置初始值以及如何定义用来确定显示哪个徽标的多重假设条件。
以下是在模板的 head 部分输入的代码示例:
<!-- TemplateParam name="Dept" type="number" value="1" -->
下面的条件语句检查指定给 Dept 参数的值。如果条件为真或匹配,则显示适当的图像。
<br>
<!-- TemplateBeginMultipleIf --><br>
<!-- checks value of Dept and shows appropriate image--><br>
<!-- TemplateBeginClause cond="Dept == 1" --> <img src=".../sales.gif"> <!-- TemplateEndIfClause --><br>
<!-- TemplateBeginIfClause cond="Dept == 2" --> <img src=".../support.gif"> <!-- TemplateEndIfClause--><br>
<!-- TemplateBeginIfClause cond="Dept == 3" --> <img src=".../hr.gif"> <!-- TemplateEndIfClause --><br>
<!-- TemplateBeginIfClause cond="Dept != 3" --> <img src=".../spacer.gif"> <!-- TemplateEndIfClause --><br>
<nowiki><!-- TemplateEndMultipleIf --><nowiki><br>创建基于模板的文档后,模板参数
将自动传递到该文档。