<?xml version="1.0" encoding="UTF-8"?>
<!--W3C Schema generated by XML Spy v3.5 NT (http://www.xmlspy.com)-->
<xsd:schema targetNamespace="http://java.sun.com/JSP/TagLibraryDescriptor" xmlns="http://java.sun.com/JSP/TagLibraryDescriptor" xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
xmlns:fg="http://www.FGolubov.com/XMLEditor" elementFormDefault="qualified">
	<xsd:complexType name="attributeType">
		<xsd:sequence>
			<xsd:element name="name" type="nameType"/>
			<xsd:element name="required" type="requiredType" minOccurs="0"/>
			<xsd:element name="rtexprvalue" type="rtexprvalueType" minOccurs="0"/>
			<xsd:element name="type" type="class-nameType" minOccurs="0"/>
			<xsd:element name="description" type="descriptionType" minOccurs="0"/>
		</xsd:sequence>
		<xsd:attribute name="id" type="xsd:ID"/>
	</xsd:complexType>
	<xsd:simpleType name="body-content-enumType">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="empty"/>
			<xsd:enumeration value="JSP"/>
			<xsd:enumeration value="tagdependent"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:complexType name="body-contentType">
		<xsd:simpleContent>
			<xsd:extension base="body-content-enumType">
				<xsd:attribute name="id" type="xsd:ID"/>
			</xsd:extension>
		</xsd:simpleContent>
	</xsd:complexType>
	<xsd:complexType name="descriptionType">
		<xsd:annotation>
			<xsd:appinfo>
				<fg:node-info editor-class="com.fg.ftreenodes.FTextAreaDialog"/>
			</xsd:appinfo>
		</xsd:annotation>
		<xsd:simpleContent>
			<xsd:extension base="xsd:string">
				<xsd:attribute name="id" type="xsd:ID"/>
			</xsd:extension>
		</xsd:simpleContent>
	</xsd:complexType>
	<xsd:complexType name="init-paramType">
		<xsd:sequence>
			<xsd:element name="param-name" type="param-nameType"/>
			<xsd:element name="param-value" type="param-valueType"/>
			<xsd:element name="description" type="descriptionType" minOccurs="0"/>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:simpleType name="dewey-decimalType">
		<xsd:restriction base="xsd:string">
			<xsd:pattern value="[0-9]+(\.[0-9]+){0,3}"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:complexType name="jsp-versionType">
		<xsd:simpleContent>
			<xsd:extension base="dewey-decimalType">
				<xsd:attribute name="id" type="xsd:ID"/>
			</xsd:extension>
		</xsd:simpleContent>
	</xsd:complexType>
	<xsd:simpleType name="class-nameType">
		<xsd:annotation>
			<xsd:appinfo>
				<fg:node-info message="Fully qualified class name."/>
			</xsd:appinfo>
		</xsd:annotation>
		<xsd:restriction base="xsd:string">
			<xsd:pattern value="[A-za-z]([A-za-z0-9])*(\.[A-za-z]([A-za-z0-9])*)*"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:complexType name="listenerType">
		<xsd:sequence>
			<xsd:element name="listener-class" type="listener-classType"/>
		</xsd:sequence>
		<xsd:attribute name="id" type="xsd:ID"/>
	</xsd:complexType>
	<xsd:complexType name="listener-classType">
		<xsd:annotation>
			<xsd:appinfo>
				<fg:node-info message="Fully qualified class name."/>
			</xsd:appinfo>
		</xsd:annotation>
		<xsd:simpleContent>
			<xsd:extension base="class-nameType">
				<xsd:attribute name="id" type="xsd:ID"/>
			</xsd:extension>
		</xsd:simpleContent>
	</xsd:complexType>
	<xsd:complexType name="nameType">
		<xsd:simpleContent>
			<xsd:extension base="xsd:NMTOKEN">
				<xsd:attribute name="id" type="xsd:ID"/>
			</xsd:extension>
		</xsd:simpleContent>
	</xsd:complexType>
	<xsd:complexType name="param-nameType">
		<xsd:simpleContent>
			<xsd:extension base="xsd:string">
				<xsd:attribute name="id" type="xsd:ID"/>
			</xsd:extension>
		</xsd:simpleContent>
	</xsd:complexType>
	<xsd:complexType name="param-valueType">
		<xsd:simpleContent>
			<xsd:extension base="xsd:string">
				<xsd:attribute name="id" type="xsd:ID"/>
			</xsd:extension>
		</xsd:simpleContent>
	</xsd:complexType>
	<xsd:simpleType name="bool-enumType">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="false"/>
			<xsd:enumeration value="true"/>
			<xsd:enumeration value="no"/>
			<xsd:enumeration value="yes"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:complexType name="requiredType">
		<xsd:simpleContent>
			<xsd:extension base="bool-enumType">
				<xsd:attribute name="id" type="xsd:ID"/>
			</xsd:extension>
		</xsd:simpleContent>
	</xsd:complexType>
	<xsd:complexType name="rtexprvalueType">
		<xsd:simpleContent>
			<xsd:extension base="bool-enumType">
				<xsd:attribute name="id" type="xsd:ID"/>
			</xsd:extension>
		</xsd:simpleContent>
	</xsd:complexType>
	<xsd:complexType name="short-nameType">
		<xsd:simpleContent>
			<xsd:extension base="xsd:NMTOKEN">
				<xsd:attribute name="id" type="xsd:ID"/>
			</xsd:extension>
		</xsd:simpleContent>
	</xsd:complexType>
	<xsd:complexType name="tagType">
		<xsd:sequence>
			<xsd:element name="name" type="nameType"/>
			<xsd:element name="tag-class" type="tag-classType"/>
			<xsd:element name="tei-class" type="tei-classType" minOccurs="0"/>
			<xsd:element name="body-content" type="body-contentType" minOccurs="0"/>
			<xsd:element name="display-name" type="xsd:string" minOccurs="0"/>
			<xsd:element name="small-icon" type="xsd:string" minOccurs="0"/>
			<xsd:element name="large-icon" type="xsd:string" minOccurs="0"/>
			<xsd:element name="description" type="descriptionType" minOccurs="0"/>
			<xsd:element name="variable" type="variableType" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element name="attribute" type="attributeType" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element name="example" type="descriptionType" minOccurs="0"/>
		</xsd:sequence>
		<xsd:attribute name="id" type="xsd:ID"/>
	</xsd:complexType>
	<xsd:complexType name="tag-classType">
		<xsd:annotation>
			<xsd:appinfo>
				<fg:node-info message="Fully qualified class name."/>
			</xsd:appinfo>
		</xsd:annotation>
		<xsd:simpleContent>
			<xsd:extension base="class-nameType">
				<xsd:attribute name="id" type="xsd:ID"/>
			</xsd:extension>
		</xsd:simpleContent>
	</xsd:complexType>
	<xsd:complexType name="taglibType">
		<xsd:sequence>
			<xsd:element name="tlib-version" type="tlib-versionType"/>
			<xsd:element name="jsp-version" type="jsp-versionType">
				<xsd:annotation>
					<xsd:appinfo>
						<fg:node-info editor-class="com.fg.ftreenodes.FComboBox">
							<fg:param>1.1</fg:param>
							<fg:param>1.2</fg:param>
						</fg:node-info>
					</xsd:appinfo>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="short-name" type="short-nameType"/>
			<xsd:element name="uri" type="uriType" minOccurs="0"/>
			<xsd:element name="display-name" type="xsd:string" minOccurs="0"/>
			<xsd:element name="small-icon" type="xsd:string" minOccurs="0"/>
			<xsd:element name="large-icon" type="xsd:string" minOccurs="0"/>
			<xsd:element name="description" type="descriptionType" minOccurs="0"/>
			<xsd:element name="validator" type="validatorType" minOccurs="0"/>
			<xsd:element name="listener" type="listenerType" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element name="tag" type="tagType" maxOccurs="unbounded"/>
		</xsd:sequence>
		<xsd:attribute name="id" type="xsd:ID"/>
	</xsd:complexType>
	<xsd:complexType name="tei-classType">
		<xsd:annotation>
			<xsd:appinfo>
				<fg:node-info message="Fully qualified class name."/>
			</xsd:appinfo>
		</xsd:annotation>
		<xsd:simpleContent>
			<xsd:extension base="class-nameType">
				<xsd:attribute name="id" type="xsd:ID"/>
			</xsd:extension>
		</xsd:simpleContent>
	</xsd:complexType>
	<xsd:complexType name="tlib-versionType">
		<xsd:simpleContent>
			<xsd:extension base="dewey-decimalType">
				<xsd:attribute name="id" type="xsd:ID"/>
			</xsd:extension>
		</xsd:simpleContent>
	</xsd:complexType>
	<xsd:complexType name="uriType">
		<xsd:simpleContent>
			<xsd:extension base="xsd:string">
				<xsd:attribute name="id" type="xsd:ID"/>
			</xsd:extension>
		</xsd:simpleContent>
	</xsd:complexType>
	<xsd:complexType name="validatorType">
		<xsd:sequence>
			<xsd:element name="validator-class" type="class-nameType"/>
			<xsd:element name="init-param" type="init-paramType" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element name="description" type="descriptionType" minOccurs="0"/>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:simpleType name="declareType">
		<xsd:annotation>
			<xsd:appinfo>
				<fg:node-info editor-class="com.fg.ftreenodes.FCheckBox">
					<fg:param>true</fg:param>
					<fg:param>false</fg:param>
				</fg:node-info>
			</xsd:appinfo>
		</xsd:annotation>
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="true"/>
			<xsd:enumeration value="false"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="scopeType">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="NESTED"/>
			<xsd:enumeration value="AT_BEGIN"/>
			<xsd:enumeration value="AT_END"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:complexType name="variableType">
		<xsd:sequence>
			<xsd:choice>
				<xsd:element name="name-given" type="xsd:string"/>
				<xsd:element name="name-from-attribute" type="xsd:string"/>
			</xsd:choice>
			<xsd:element name="variable-class" type="class-nameType" minOccurs="0"/>
			<xsd:element name="declare" type="declareType" default="true" minOccurs="0"/>
			<xsd:element name="scope" type="scopeType" default="NESTED" minOccurs="0"/>
			<xsd:element name="description" type="descriptionType" minOccurs="0"/>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:element name="taglib" type="taglibType"/>
</xsd:schema>
