tld標籤文件的格式解釋
tld是taglib description 的縮寫
定製標籤拼圖中的最後一塊是TLD(標籤庫描述符)文件。創建的每個標籤都必須在一個TLD文件中聲明,而且這一文件還必須連同標籤的Java處理器類一起被部署。正如在前一節中所看到的,servlet容器知道在何處放置了TLD文件,因爲已經在web.xml標準servlet配置文件中聲明瞭路徑。
<?xml version="1.0" encoding="ISO-8859-1" ?>
<taglib xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee web-jsptaglibrary_2_0.xsd"
version="2.0">
<tlib-version>1.0</tlib-version>
<jsp-version>1.2</jsp-version>
<short-name>function</short-name>
<uri>http://hellking.com/function</uri>
<display-name>JSTL sql RT</display-name>
<description>my function</description>
<tag>
<name>tvBusinessItemNames</name>
<tag-class>nettv.web.taglib.TVBusinessItemNamesTag</tag-class>
<body-content>EMPTY</body-content>
<display-name></display-name>
<description>
<![CDATA[....]]>
</description>
<attribute>
<name>type</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
<description>
<![CDATA[...]]>
</description>
</attribute>
<attribute>
<name>code</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
<description>
<![CDATA[...]]>
</description>
</attribute>
</tag>
<function>
<name>formatPer</name>
<function-class>com.jspdev.ch16.PerUtil</function-class>
<function-signature>java.lang.String formatPer(float)</function-signature>
</function>
</taglib>
可以看到,TLD文件只不過是一個XML文件。根標籤是<taglib>,它包含一個或者多個<tag>標籤,該元素用來聲明定製標籤。表4-1、表4-2和表4-3解釋了TLD中的每個標籤。注意每個<taglib>都必須包含一個或者多個<tag>聲明。
表4-2 <taglib>的子標籤
taglib TLD文件的根標籤
tlibversion 此標籤庫的版本
jspversion 此標籤庫依賴的JSP版本。這裏使用1.1
shortname 當在JSP中使用標籤時,此標籤庫首選或者建議的前綴。當然可以完全忽略這個建議
tag 包含針對此標籤庫中的一個標籤的元數據
function函數
表4-2 <tag>的子標籤
name 標籤名稱
tagclass Java標籤處理器類的名稱。注意這是處理器類的全限定名稱,比如net.thinksquared.tags. MessageWriteTagHandler
bodycontent 此標籤的主體部分的內容。使用JSP
attribute 包含了此標籤的一個屬性的元數據
表4-3 <attribute>的子標籤
name 屬性的名稱。很明顯它在該標籤中必須是唯一的
required 指示該標籤是必需的(true)或者可選的(false)
表4-4 <function>的子標籤
name函數引用名稱
function-class函數處理類
function-signature函數處理方法