Следующее ОТД описывает файл Tag Library Descriptor в формате JSP 1.1.
<!--Это ОТД, определяющее файл (.tld)
(XML) формата/синтаксиса JavaServer Pages 1.1 Tag Library descriptor'а.
Tag Library/Библиотека Тэгов это JAR-файл, содержащий файл верных экземпляров Tag Library Descriptor'а
(taglib.tld) в субдиректории META-INF вместе с с соответствующими реализующими классами и
другими ресурсами, необходимыми для реализации тэгов, определённых в ней.
Использование является субъектом лицензирования. --> <!-- Тэг
taglib является корнем документа, он определяет: tlibversion - версия реализации библиотеки тэгов jspversion - версия JSP, на которой основана библиотека тэгов shortname - простое краткое имя по умолчанию, которое может
использоваться утилитами авторизации JSP для создания имён с мнемоническим
значением; например, it может использоваться как предпочтительное
значение префикса в директивах taglib uri - uri, уникально идентифицирующий эту taglib info - простая строка, описывающая “использование” этой taglib, должна
различаться пользователем --> <!ELEMENT taglib
(tlibversion, jspversion?, shortname, uri?, info?, tag+)>
<!ATTLIST taglib id ID #IMPLIED xmlns CDATA #FIXED
“http://java.sun.com/dtd/web-jsptaglibrary_1_1.dtd” >
<!-- Описывает версию (номер) библиотеки тэгов (dewey decimal)
#PCDATA ::= [0-9]*{ “.”[0-9] }0..3 -->
<!ELEMENT tlibversion (#PCDATA)>
<!--Описывает версию (номер), наличия которой требует эта библиотеки тэгов для правильного
функционирования (dewey decimal) По умолчанию 1.1
#PCDATA ::= [0-9]*{ “.”[0-9] }0..3 -->
<!ELEMENT jspversion (#PCDATA)>
<!-- Определяет краткое (по умолчанию) shortname, используемое для имён тэгов и переменных, используемых/созданных
этой библиотекой тэгов. Не используйте пробелы и не начинайте с цифры или символа подчёркивания.
#PCDATA ::= NMTOKEN --> <!ELEMENT shortname (#PCDATA)>
<!-- Определяет публичный URI, который уникально идентифицирует эту версию
библиотеки тэгов. оставьте его пустым, если он не применяется. -->
<!ELEMENT uri (#PCDATA)>
<!-- Определяет произвольную текстовую строку - описание библиотеки. -->
<!ELEMENT info(#PCDATA)>
<!-- Этот тэг определяет уникальный tag в данной библиотеке тэгов, определяя:
- уникальное имя тэга/элемента
- подкласс класса реализации javax.servlet.jsp.tagext.Tag
- необязательный/optional подкласс от javax.servlet.jsp.tagext.TagExtraInfo
- тип содержимого тела (hint/подсказка)
- необязательную специфическую информацию тэга
- любые атрибуты -->
<!ELEMENT tag (name, tagclass, teiclass?, bodycontent?, info?, attribute*)>
<!-- Определяет подкласс от javax.serlvet.jsp.tagext.Tag, реализующий семантику времени запросадля данного
тэга. (необходим) #PCDATA ::= полное квалифицированное имя Java-класса -->
<!ELEMENT tagclass (#PCDATA)>
<!-- Определяет подкласс от javax.servlet.jsp.tagext.TagExtraInfo для данного тэга (необязательный). Если не
задан, к классу не обращаются на этапе трансляции. #PCDATA ::= полное квалифицированное имя Java-класса
--> <!ELEMENT teiclass (#PCDATA)>
<!-- Предоставляет подсказку о содержимом тела тэга. Предназначен прежде
всего для использования утилитами компоновки страниц.
В настоящий момент специфицированы три значения: tagdependent - Тело тэга интерпретируется реализацией самого тэга и
вероятнее всего - на другом “language/языке”, например, встроенные операторы SQL. JSP - Тело тэга содержит вложенный синтаксис JSP empty - Тело тэга обязано быть пустым. По умолчанию (если не определено) - JSP.
#PCDATA ::= tagdependent | JSP | empty --> <!ELEMENT bodycontent (#PCDATA)>
<!-- Тэгattribute определяет атрибут вкладывающих/содержащих тэгов.
Определение атрибута состоит из:
- имени атрибута (необходимо)
- необходим атрибут, или по выбору (optional)
- может ли значение атрибута динамически вычисляться на этапе прогона выражением скриптлета (optional)
--> <!ELEMENT attribute (name, required? , rtexprvalue?)>
<!-- Определяет каноническое имя определяемого тэга или атрибута.
#PCDATA ::= NMTOKEN --> <!ELEMENT name(#PCDATA)>
<!-- Определяет необходим/required вкладывающий атрибут, или по выбору/optional.
#PCDATA ::= true | false | yes | no
Если отсутствует, тогда по умолчанию - “false”, то есть атрибут по выбору/optional.
--> <!ELEMENT required (#PCDATA)>
<!-- Определяет, может ли вкладывающий атрибут иметь в качестве значения
выражения скриптлета, т.е. может ли значение атрибута динамически рассчитываться
во время запроса, что противоположно static/статическому значению, определяемому
на этапе трансляции. #PCDATA ::= true | false | yes | no
Если отсутствует, тогда по умолчанию - “false”, то есть атрибут имеет статическое значение.
--> <!ELEMENT rtexprvalue (#PCDATA)>
<!ATTLIST tlibversion id ID #IMPLIED> <!ATTLIST jspversion id ID #IMPLIED>
<!ATTLIST shortname id ID #IMPLIED> <!ATTLIST uri id ID #IMPLIED>
<!ATTLIST info id ID #IMPLIED> <!ATTLIST tag id ID #IMPLIED>
<!ATTLIST tagclass id ID #IMPLIED> <!ATTLIST teiclass id ID #IMPLIED>
<!ATTLIST bodycontent id ID #IMPLIED> <!ATTLIST attribute id ID #IMPLIED>
<!ATTLIST name id ID #IMPLIED> <!ATTLIST required id ID #IMPLIED>
<!ATTLIST rtexprvalue id ID #IMPLIED>