因為最近一直在做 Dreamweaver 插件的開發,中文的資料非常少,自己英文又差,查看英文資料的時候不由頭昏腦脹。迫不得已把其中一些重要的內容翻譯成中文之後,看的時候才覺得爽快不少。本節選自 Dreamweaver 8 附帶的《Extending Dreamweaver 8》,翻譯的時候參考了一下俠客島翻譯的《Dreamweaver 4 中文幫助》。不過老實不客氣地說,我有點懷疑那個幫助的某些部分是用金山快譯之類的軟件翻譯的,反正讀起來比英文還難懂。
服務器端技術,比如ASP、Macromedia ColdFusion,JSP,以及 PHP 在 HTML 文件裡面使用特殊的非 HTML 語法,服務器在這些代碼的基礎上創建和提供 HTML 格式的內容。當 Dreamweaver 檢測到非 HTML 標簽,Dreamweaver 會調用第三方標簽的定義文件來比較它們,這些文件指定 Dreamweaver 如何讀取和顯示這些標簽。
舉個例子,在標准的 HTML 語言之外,ASP 文件還包含了供服務器解析的 ASP 代碼。ASP 代碼看起來和 HTML 標簽類似,它由一對標簽,開始的 <% 和關閉的 %>,來作標記。在 Dreamweaver 的 Configuration/ThirdPartyTags 文件夾裡有一個名為 Tags.xml 的文件,這個文件就是用來描述包括 ASP 在內的各種第三方標簽規范的,並定義了 Dreamweaver 如何來顯示這些代碼。使用這種方法,ASP 代碼在 Tags.xml 中已經被規范了,所以 Dreamweaver 不會再試著在 <%...%>之間解析任何代碼。不過在設計視圖裡面,它會顯示一個圖標以表示這是 ASP 代碼。你可以定義自己的標簽,並且能為每套標簽創建一個新的標簽庫文件,來指定 Dreamweaver 如何讀取和顯示你的標簽。
注意:這部分說明了如何定義 Dreamweaver 顯示一個自定義標簽的方法,但是沒有描述如何編輯自定義標簽的內容或是屬性。如何創建屬性檢查器來檢查和修改自定義標簽的屬性,請查看屬性檢查器以獲得相關信息。
每個標簽庫文件都會定義一個或者多個自定義標簽的名稱、類型、內容模式、顯示規范和圖標。你可以創建任意數量的標簽庫文件,但是它們必須位於 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 格式的普通標簽
happy 標簽范例是一個 HTML 格式的普通標簽。它開始於 <happy> 標簽,在開始標簽與結束標簽之間包含數據,最後結束於</happy> 標簽。
·字符串界定的標簽
字符串界定的標簽用一個字符串開始,用另一個字符串結束,它們和 HTML 空標簽(諸如 img 之類)有類似之處,因為它們既不包含內容也沒有關閉標簽。如果 happy 也是一個字符串界定的標簽,那它的定義規范裡面必須包括 start_string 與 end_string 兩個屬性。ASP 標簽都是字符串界定的標簽,它們從 <% 開始,到 %> 結束,也沒有關閉標簽。
下面的信息羅列了 tagspec 標簽的各個屬性和有效值。帶有星號(“*”)的屬性表示不適用於字符串界定的標簽,可選屬性則使用了大括號({})來標識;不難推斷,其他沒有使用大括號標識的都屬於必要的屬性。
<tagspec>
說明
關於第三方標簽的預設信息
屬性
tag_name,{tag_type},{render_contents},{content_model},{start_string},{end_string},{detect_in_attribute},{parse_attributes},icon,icon_width,icon_height,{equivalent_tag},{is_visual},{server_model}
tag_name 表示自定義的名稱。對於字符串界定的標簽,tag_name 僅用於檢測一個特定的屬性檢查器是否適用於這個標簽。如果屬性檢查器的第一行在符合規范的位置(其實就是在第一行的聲明裡面)包含了這個標簽名並標上星號(“*”),那麼這個檢查器將被允許檢查該類型的標簽。舉個例子,ASP 代碼的標簽名就是 ASP,允許檢查 ASP 代碼的檢查器必須在第一行包含 *ASP*。關於屬性檢查器 API 的信息,請參看 屬性檢查器。
tag_type 確定這個標簽是空的(像前面提到的 img 那樣),還是允許在開始與關閉標簽之間放置內容(像 code 標簽那樣)。這個屬性對於普通(非字符串界定的)標簽是必要的,但是對字符串界定的標簽不生效,因為他們總是空的。有效值包括 "empty" 和 "nonempty"。
render_contents 確定在設計視圖中,該標簽顯示內容,還是代之以特定的圖標。該屬性僅對非空標簽是必要的,對於空標簽則不生效(空標簽本身沒有內容可供顯示)。該屬性僅應用於插入到屬性外部的標簽,如果一個標簽插入其他標簽的屬性值內,它的內容將不會顯示(這一段有點難理解,我想到的是 RealMedia、Flash 之類的 Object,裡面的那些 param 標簽?)。有效值為 "true" 或者是 "false"。
content_model 描述這個標簽能包含哪種內容,還有這個標簽能插入到 HTML 文件的什麼地方。有效值包括 "block_model","he
123下一頁