定制第三方标签的解释和外观

服务器端的处理技术,如 ASP,PHP,ColdFusion,和 JSP 都需要在 HTML 文件中使用一些非 HTML 的代码;服务器就是基于这些非 HTML 代码来创建和处理 HTML 内容的。当 Dreamweaver 遇到非 HTML 标签的时候,它会将这些非 HTML 标签和自己附带的第三方标签文件进行比较,而这个第三放标签文件就定义了 Dreamweaver 如何读取和显示非 HTML 标签。

举例来说,ASP (Active Server Pages) 文件中包含有供服务器进行解释的代码。这个代码被一对分隔符分开:它以字符串 <% 开始,以字符串 %> 结束。Dreamweaver 的 Configuration/ThirdPartyTags 文件夹中包含了一个名为 ASP.xml 的文件,这个文件是用来描述 ASP 代码的格式,定义 Dreamweaver 显示代码的方式的。由于 ASP 代码是在 ASP.xml 文件中指定的,Dreamweaver 是不会尝试解释前后分隔符之间的任何内容的。

当然你可以定义自己的标签,创建一个标签数据库文件,定义 Dreamweaver 读取和显示这些自定义标签的方式。如果你正在使用的是一个服务器端的标识系统,而不是使用的 ASP,ColdFusion,或者 PHP,那么创建标签数据库文件是非常非常有用的;你可以为每一个这样的标识系统创建一个标签数据库文件,告诉 Dreamweaver 如何显示这些标签。

注意:这一部分主要是解释如何在 Dreamweaver 中定义自定义标签的外观的,而不是讲解如何编辑一个自定义标签的属性内容的。要想了解有关如何创建一个属性面板来监视和修改自定义标签的属性的知识,参阅 Extending Dreamweaver 的 "Property Inspectors" 部分。

每个标签数据库文件都需要定义标签的名字,类型,内容模式,外观配置,以及图标。你可以创建任意多的标签数据库文件,但所有这些文件都必须放在 Configuration/ThirdPartyTags 文件夹中,这样才能被 Dreamweaver 读取和处理。标签数据库文件的后缀是 .xml。

如果你正在同时处理若干个相互无关的站点(比如说,你是一个自由的开发者),你可以将针对某一站点的所有的标签规范都放进一个文件中去。然后只要将数据库文件和自定义图标,以及属性面板都交给站点维护人员就可以了。

举例说,你使用一个被称之为 TAGSPEC 的 XML 标签定义了一个标签规范,下边的代码就描述了 HAPPY 标签的规范:

<TAGSPEC TAG_NAME="happy" TAG_TYPE="nonempty" RENDER_CONTENTS="false"
CONTENT_MODEL="marker_model" ICON="happy.gif" ICON_WIDTH="18"
ICON_HEIGHT="18"></TAGSPEC>

使用 TAGSPEC 可以定义出两类不同的标签:普通的 HTML 样式标签,和 string-delimited 标签,后者开始和结束位置都是一个字符串。String-delimited 标签有点像空闲 HTML 标签(如 IMG),在这样的标签之下没有围住任何的内容,也没有封闭标签。前边演示的 HAPPY 标签就是一个普通的 HTML 样式的标签;它的开始标签是 <HAPPY>,包围的有内容,而结束标签是 </HAPPY>。ASP 标签也属于 string-delimited 标签,它以字符串 <% 开始,以字符串 %> 结束。

下边的表格描述了 TAGSPEC 的属性及其可能的属性值:
属性 属性值 描述

TAG_NAME

tagName

自定义标签的名字。必需的。(对于 string-delimited 标签来讲,TAG_NAME 只是用来确定给定的属性面板是否可用于这个标签。如果属性面板的第一行包含了这个标签的名字,而且前后都有一个星号,那么属性面板就可以用于这种类型的标签。例如,对于 ASP 代码来讲,TAG_NAME 就是 ASP;能够检查出 ASP 代码的属性面板必须在第一行有 *ASP*。有关属性面板 API 的介绍,参阅 Extending Dreamweaver 的 "Property Inspectors" 部分。)

TAG_TYPE*

emptynonempty

确定标签本身是否就是内容(如 IMG),或者这个标签是否包围内容(如 CODE)。对于普通标签(而非 string-delimited 标签) 这个属性是必需的。

RENDER_CONTENTS*

TRUEFALSE

决定标签中的内容是否应该出现在文档窗中,或者仅仅是以图标代替。对于非空闲标签这个属性是必需的。只适用于出现在属性之外的标签。

CONTENT_MODEL*

block_modelhead_modelmarker_model,或 script_model

描述标签内可以包含什么样的内容和这个标签可以被什么内容包含。必需的。

block_model 规定了可以包含块一级部件--DIVP--的元素,和只能够出现在 BODY 部分或只能出现在正文内容标签--DIVLAYER,或 TD 内的标签。

head_model 规定了可以包含文本内容的标签,以及只能出现在 HEAD 部分的标签。

marker_model 规定了可以包含任何有效的 HTML 代码的标签,以及可以出现在任何地方的标签。(由于在一个有效的 HEAD 不见外边添加文本会生成无效的 HTML,所以如果你想将包含有文本的自定义标签放到 HEAD 部分的话,就必须使用 head_model 来代替 marker_model。)

使用 marker_model 来规定那些需要成行显示(位于诸如 PDIV 等块级元素之内)而不致断行的标签。

script_model 允许它所规定的标签存在于文档开始和封闭 HTML 标签中的任何位置。当 Dreamweaver 遇到这种类型的标签时,程序会忽略标签的所有内容的。这个主要用于 Dreamweaver 不能解析的第三方标签标记(像某些 ColdFusion 标签)。

START_STRING

beginningOfTag

规定标记 string-delimited 标签开始的分隔符。String-delimited 标签可以出现在文档中任何注解出现的位置。Dreamweaver 不会执行 START_STRINGEND_STRING 之间的任何的标签解析和条目或 URL 编码的。如果 END_STRING 被指定,这个属性就是必需的。

END_STRING

endOfTag

规定标记 string-delimited 标签结束的分隔符。如果 START_STRING 被指定,这个属性就是必需的。

DETECT_IN_ATTRIBUTE

TRUE or FALSE

指明是否忽略 START_STRINGEND_STRING (或者是没有定义字符串的开始和封闭标签)之间的一切内容,不管那些字符串是否位于属性的名字或属性之内。对于 string-delimited 标签来说这个属性值必需设定为 TRUE;默认值是 FALSE

PARSE_ATTRIBUTES*

TRUE or FALSE

指明是否解析标签属性。如果属性值设定为 TRUE (默认),Dreamweaver 就会对属性进行解析;如果属性值设定为 FALSE,Dreamweaver 会忽略右引号后边第一个出现的尖括号为止的一切内容。例如,对于像 CFIF (as in <cfif a is 1>) 这样的标签这个属性值就要设定为 FALSE

ICON

URL

规定标签图标的文件名和路径。对空闲标签来说这个属性是必需的,对那些内容不显示在文档窗的非空闲标签来说也是必需的。

ICON_WIDTH

widthInPixels

规定图标的宽度。

ICON_HEIGHT

heightInPixels

规定图标的高度。

* 忽略使用了 START_STRING 和 END_STRING 的标签。