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函数处理方法