From 9542dfaf26cf2edcb91f622a83a8de2783679939 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Contreras?= Date: Fri, 26 Apr 2024 14:36:15 -0600 Subject: [PATCH] Add missing schemas for Jakarta Server Pages Tag Library - Implement CatalogDescriptor2 instead of deprecated CatalogDescriptor - Add JSTL schema version 3.0 for jakarta 9 - Add JSTL schema version 3.1 for jakarta 10 - Add JSTL schema version 4.0 for jakarta 11 --- enterprise/web.core/licenseinfo.xml | 4 + .../modules/web/taglib/TaglibCatalog.java | 134 +- .../resources/web-jsptaglibrary_3_1.mdd | 745 +++++++++++ .../resources/web-jsptaglibrary_3_1.xsd | 1109 +++++++++++++++++ .../resources/web-jsptaglibrary_4_0.mdd | 745 +++++++++++ .../resources/web-jsptaglibrary_4_0.xsd | 1109 +++++++++++++++++ 6 files changed, 3815 insertions(+), 31 deletions(-) create mode 100644 enterprise/web.core/src/org/netbeans/modules/web/taglib/resources/web-jsptaglibrary_3_1.mdd create mode 100644 enterprise/web.core/src/org/netbeans/modules/web/taglib/resources/web-jsptaglibrary_3_1.xsd create mode 100644 enterprise/web.core/src/org/netbeans/modules/web/taglib/resources/web-jsptaglibrary_4_0.mdd create mode 100644 enterprise/web.core/src/org/netbeans/modules/web/taglib/resources/web-jsptaglibrary_4_0.xsd diff --git a/enterprise/web.core/licenseinfo.xml b/enterprise/web.core/licenseinfo.xml index b871fdf31163..c4ea4d098b44 100644 --- a/enterprise/web.core/licenseinfo.xml +++ b/enterprise/web.core/licenseinfo.xml @@ -103,6 +103,10 @@ src/org/netbeans/modules/web/taglib/resources/web-jsptaglibrary_3_0.xsd src/org/netbeans/modules/web/taglib/resources/web-jsptaglibrary_3_0.mdd + src/org/netbeans/modules/web/taglib/resources/web-jsptaglibrary_3_1.xsd + src/org/netbeans/modules/web/taglib/resources/web-jsptaglibrary_3_1.mdd + src/org/netbeans/modules/web/taglib/resources/web-jsptaglibrary_4_0.xsd + src/org/netbeans/modules/web/taglib/resources/web-jsptaglibrary_4_0.mdd Copyright (c) 2009, 2020 Oracle and/or its affiliates. All rights reserved. diff --git a/enterprise/web.core/src/org/netbeans/modules/web/taglib/TaglibCatalog.java b/enterprise/web.core/src/org/netbeans/modules/web/taglib/TaglibCatalog.java index 366a7279af55..5321b80f6e17 100644 --- a/enterprise/web.core/src/org/netbeans/modules/web/taglib/TaglibCatalog.java +++ b/enterprise/web.core/src/org/netbeans/modules/web/taglib/TaglibCatalog.java @@ -19,41 +19,67 @@ package org.netbeans.modules.web.taglib; +import java.beans.PropertyChangeListener; +import java.io.IOException; +import java.io.StringReader; import java.util.ArrayList; +import java.util.Iterator; import java.util.List; -import org.netbeans.modules.xml.catalog.spi.CatalogDescriptor; +import org.netbeans.modules.xml.catalog.spi.CatalogDescriptor2; import org.netbeans.modules.xml.catalog.spi.CatalogListener; import org.netbeans.modules.xml.catalog.spi.CatalogReader; -import org.openide.util.ImageUtilities; import org.openide.util.NbBundle; +import org.xml.sax.EntityResolver; +import org.xml.sax.InputSource; +import org.xml.sax.SAXException; /** Catalog for taglib DTDs and schemas that enables code completion and XML validation in editor. * * @author Milan Kuchtiak */ -public class TaglibCatalog implements CatalogReader, CatalogDescriptor, org.xml.sax.EntityResolver { +public class TaglibCatalog implements CatalogReader, CatalogDescriptor2, EntityResolver { private static final String TAGLIB_1_1="-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN"; // NOI18N private static final String TAGLIB_1_2="-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"; // NOI18N public static final String J2EE_NS = "http://java.sun.com/xml/ns/j2ee"; // NOI18N public static final String JAVAEE_NS = "http://java.sun.com/xml/ns/javaee"; // NOI18N + public static final String JAKARTAEE_NS = "http://jakarta.ee/xml/ns/jakartaee"; // NOI18N private static final String TAGLIB_2_0_XSD="web-jsptaglibrary_2_0.xsd"; // NOI18N private static final String TAGLIB_2_1_XSD="web-jsptaglibrary_2_1.xsd"; // NOI18N + private static final String TAGLIB_3_0_XSD="web-jsptaglibrary_3_0.xsd"; // NOI18N + private static final String TAGLIB_3_1_XSD="web-jsptaglibrary_3_1.xsd"; // NOI18N + private static final String TAGLIB_4_0_XSD="web-jsptaglibrary_4_0.xsd"; // NOI18N private static final String TAGLIB_2_0=J2EE_NS+"/"+TAGLIB_2_0_XSD; // NOI18N private static final String TAGLIB_2_1=JAVAEE_NS+"/"+TAGLIB_2_1_XSD; // NOI18N + private static final String TAGLIB_3_0=JAKARTAEE_NS+"/"+TAGLIB_3_0_XSD; // NOI18N + private static final String TAGLIB_3_1=JAKARTAEE_NS+"/"+TAGLIB_3_1_XSD; // NOI18N + private static final String TAGLIB_4_0=JAKARTAEE_NS+"/"+TAGLIB_4_0_XSD; // NOI18N public static final String TAGLIB_2_0_ID="SCHEMA:"+TAGLIB_2_0; // NOI18N public static final String TAGLIB_2_1_ID="SCHEMA:"+TAGLIB_2_1; // NOI18N - private static final String WEB_SERVICES_CLIENT_XSD = "http://www.ibm.com/webservices/xsd/j2ee_web_services_client_1_1.xsd"; // NOI18N + public static final String TAGLIB_3_0_ID="SCHEMA:"+TAGLIB_3_0; // NOI18N + public static final String TAGLIB_3_1_ID="SCHEMA:"+TAGLIB_3_1; // NOI18N + public static final String TAGLIB_4_0_ID="SCHEMA:"+TAGLIB_4_0; // NOI18N + + private static final String URL_WEB_SERVICES_CLIENT_IBM = "http://www.ibm.com/webservices/xsd/j2ee_web_services_client_1_1.xsd"; // NOI18N + private static final String URL_WEB_SERVICES_CLIENT_1_1 = "nbres:/org/netbeans/modules/web/taglib/resources/j2ee_web_services_client_1_1.xsd"; // NOI18N + private static final String URL_WEB_SERVICES_CLIENT_1_2 = "nbres:/org/netbeans/modules/web/taglib/resources/javaee_web_services_client_1_2.xsd"; // NOI18N private static final String URL_TAGLIB_1_1="nbres:/org/netbeans/modules/web/taglib/resources/web-jsptaglibrary_1_1.dtd"; // NOI18N private static final String URL_TAGLIB_1_2="nbres:/org/netbeans/modules/web/taglib/resources/web-jsptaglibrary_1_2.dtd"; // NOI18N private static final String URL_TAGLIB_2_0="nbres:/org/netbeans/modules/web/taglib/resources/web-jsptaglibrary_2_0.xsd"; // NOI18N private static final String URL_TAGLIB_2_1="nbres:/org/netbeans/modules/web/taglib/resources/web-jsptaglibrary_2_1.xsd"; // NOI18N - private static final String URL_WEB_SERVICES_CLIENT = "nbres:/org/netbeans/modules/web/taglib/resources/j2ee_web_services_client_1_1.xsd"; // NOI18N + private static final String URL_TAGLIB_3_0="nbres:/org/netbeans/modules/web/taglib/resources/web-jsptaglibrary_3_0.xsd"; // NOI18N + private static final String URL_TAGLIB_3_1="nbres:/org/netbeans/modules/web/taglib/resources/web-jsptaglibrary_3_1.xsd"; // NOI18N + private static final String URL_TAGLIB_4_0="nbres:/org/netbeans/modules/web/taglib/resources/web-jsptaglibrary_4_0.xsd"; // NOI18N private static final String XML_XSD="http://www.w3.org/2001/xml.xsd"; // NOI18N - private static final String XML_XSD_DEF="In due course, we should install the relevant ISO 2- and 3-letter codes as the enumerated possible values . . ."; // NOI18N + private static final String XML_XSD_DEF="" + + "" + + "" + + "" + + "In due course, we should install the relevant ISO 2- and 3-letter codes as the enumerated possible values . . ." + + ""; // NOI18N /** Creates a new instance of TaglibCatalog */ public TaglibCatalog() { @@ -63,12 +89,16 @@ public TaglibCatalog() { * Get String iterator representing all public IDs registered in catalog. * @return null if cannot proceed, try later. */ - public java.util.Iterator getPublicIDs() { - List list = new ArrayList<>(); + @Override + public Iterator getPublicIDs() { + List list = new ArrayList<>(16); list.add(TAGLIB_1_1); list.add(TAGLIB_1_2); list.add(TAGLIB_2_0_ID); list.add(TAGLIB_2_1_ID); + list.add(TAGLIB_3_0_ID); + list.add(TAGLIB_3_1_ID); + list.add(TAGLIB_4_0_ID); return list.listIterator(); } @@ -76,21 +106,36 @@ public java.util.Iterator getPublicIDs() { * Get registered systemid for given public Id or null if not registered. * @return null if not registered */ + @Override public String getSystemID(String publicId) { - if (TAGLIB_1_2.equals(publicId)) - return URL_TAGLIB_1_2; - else if (TAGLIB_1_1.equals(publicId)) - return URL_TAGLIB_1_1; - else if (TAGLIB_2_0_ID.equals(publicId)) - return URL_TAGLIB_2_0; - else if (TAGLIB_2_1_ID.equals(publicId)) - return URL_TAGLIB_2_1; - else return null; + if (null == publicId) { + return null; + } else { + switch (publicId) { + case TAGLIB_1_1: + return URL_TAGLIB_1_1; + case TAGLIB_1_2: + return URL_TAGLIB_1_2; + case TAGLIB_2_0_ID: + return URL_TAGLIB_2_0; + case TAGLIB_2_1_ID: + return URL_TAGLIB_2_1; + case TAGLIB_3_0_ID: + return URL_TAGLIB_3_0; + case TAGLIB_3_1_ID: + return URL_TAGLIB_3_1; + case TAGLIB_4_0_ID: + return URL_TAGLIB_4_0; + default: + return null; + } + } } /** * Refresh content according to content of mounted catalog. */ + @Override public void refresh() { } @@ -98,64 +143,89 @@ public void refresh() { * Optional operation allowing to listen at catalog for changes. * @throws UnsupportedOpertaionException if not supported by the implementation. */ + @Override public void addCatalogListener(CatalogListener l) { } /** - * Optional operation couled with addCatalogListener. + * Optional operation could with addCatalogListener. * @throws UnsupportedOpertaionException if not supported by the implementation. */ + @Override public void removeCatalogListener(CatalogListener l) { } /** Registers new listener. */ - public void addPropertyChangeListener(java.beans.PropertyChangeListener l) { + @Override + public void addPropertyChangeListener(PropertyChangeListener l) { } /** * @return I18N display name */ + @Override public String getDisplayName() { return NbBundle.getMessage (TaglibCatalog.class, "LBL_TaglibCatalog"); } /** - * Return visuaized state of given catalog. + * Return visualized state of given catalog. * @param type of icon defined by JavaBeans specs * @return icon representing current state or null */ - public java.awt.Image getIcon(int type) { - return ImageUtilities.loadImage("org/netbeans/modules/web/taglib/resources/TaglibCatalog.gif"); // NOI18N + @Override + public String getIconResource(int type) { + return "org/netbeans/modules/web/taglib/resources/TaglibCatalog.gif"; // NOI18N } /** * @return I18N short description */ + @Override public String getShortDescription() { return NbBundle.getMessage (TaglibCatalog.class, "DESC_TaglibCatalog"); } /** Unregister the listener. */ - public void removePropertyChangeListener(java.beans.PropertyChangeListener l) { + @Override + public void removePropertyChangeListener(PropertyChangeListener l) { } /** - * Resolves schema definition file for taglib descriptor (spec.1_1, 1_2, 2_0) + * Resolves schema definition file for taglib descriptor + * (spec. 1_1, 1_2, 2_0, 2_1, 3_0, 3_1, 4_0) * @param publicId publicId for resolved entity (null in our case) * @param systemId systemId for resolved entity * @return InputSource for publisId, */ - public org.xml.sax.InputSource resolveEntity(String publicId, String systemId) throws org.xml.sax.SAXException, java.io.IOException { + @Override + public InputSource resolveEntity(String publicId, String systemId) throws SAXException, IOException { if (TAGLIB_2_0.equals(systemId)) { - return new org.xml.sax.InputSource(URL_TAGLIB_2_0); + return new InputSource(URL_TAGLIB_2_0); } else if (TAGLIB_2_1.equals(systemId)) { - return new org.xml.sax.InputSource(URL_TAGLIB_2_1); + return new InputSource(URL_TAGLIB_2_1); + } else if (TAGLIB_3_0.equals(systemId)) { + return new InputSource(URL_TAGLIB_3_0); + } else if (TAGLIB_3_1.equals(systemId)) { + return new InputSource(URL_TAGLIB_3_1); + } else if (TAGLIB_4_0.equals(systemId)) { + return new InputSource(URL_TAGLIB_4_0); } else if (systemId!=null && systemId.endsWith(TAGLIB_2_0_XSD)) { - return new org.xml.sax.InputSource(URL_TAGLIB_2_0); - } else if (WEB_SERVICES_CLIENT_XSD.equals(systemId)) { - return new org.xml.sax.InputSource(URL_WEB_SERVICES_CLIENT); + return new InputSource(URL_TAGLIB_2_0); + } else if (systemId!=null && systemId.endsWith(TAGLIB_2_1_XSD)) { + return new InputSource(URL_TAGLIB_2_1); + } else if (systemId!=null && systemId.endsWith(TAGLIB_3_0_XSD)) { + return new InputSource(URL_TAGLIB_3_0); + } else if (systemId!=null && systemId.endsWith(TAGLIB_3_1_XSD)) { + return new InputSource(URL_TAGLIB_3_1); + } else if (systemId!=null && systemId.endsWith(TAGLIB_4_0_XSD)) { + return new InputSource(URL_TAGLIB_4_0); + } else if (URL_WEB_SERVICES_CLIENT_IBM.equals(systemId)) { + return new InputSource(URL_WEB_SERVICES_CLIENT_1_1); + } else if (URL_WEB_SERVICES_CLIENT_1_2.equals(systemId)) { + return new InputSource(URL_WEB_SERVICES_CLIENT_1_2); } else if (XML_XSD.equals(systemId)) { - return new org.xml.sax.InputSource(new java.io.StringReader(XML_XSD_DEF)); + return new InputSource(new StringReader(XML_XSD_DEF)); } else { return null; } @@ -165,6 +235,7 @@ public org.xml.sax.InputSource resolveEntity(String publicId, String systemId) t * Get registered URI for the given name or null if not registered. * @return null if not registered */ + @Override public String resolveURI(String name) { return null; } @@ -172,6 +243,7 @@ public String resolveURI(String name) { * Get registered URI for the given publicId or null if not registered. * @return null if not registered */ + @Override public String resolvePublic(String publicId) { return null; } diff --git a/enterprise/web.core/src/org/netbeans/modules/web/taglib/resources/web-jsptaglibrary_3_1.mdd b/enterprise/web.core/src/org/netbeans/modules/web/taglib/resources/web-jsptaglibrary_3_1.mdd new file mode 100644 index 000000000000..ad9a3ae3eb4d --- /dev/null +++ b/enterprise/web.core/src/org/netbeans/modules/web/taglib/resources/web-jsptaglibrary_3_1.mdd @@ -0,0 +1,745 @@ + + + + + taglib + https://jakarta.ee/xml/ns/jakartaee + Taglib + + Description + + + DisplayName + + + Icon + + + TlibVersion + + + ShortName + + + Uri + + + Validator + + + Listener + + + Tag + + + TagFile + + + Function + + + TaglibExtension + + + + dewey-versionType + https://jakarta.ee/xml/ns/jakartaee + DeweyVersionType + java.math.BigDecimal + + + tld-canonical-nameType + https://jakarta.ee/xml/ns/jakartaee + TldCanonicalNameType + java.lang.String + + + xsdAnyURIType + https://jakarta.ee/xml/ns/jakartaee + XsdAnyURIType + java.lang.String + + + validatorType + https://jakarta.ee/xml/ns/jakartaee + ValidatorType + + Description + + + ValidatorClass + + + InitParam + + + + listenerType + https://jakarta.ee/xml/ns/jakartaee + ListenerType + + Description + + + DisplayName + + + Icon + + + ListenerClass + + + + tagType + https://jakarta.ee/xml/ns/jakartaee + TagType + + Description + + + DisplayName + + + Icon + + + Name + + + TagClass + + + TeiClass + + + BodyContent + + + Variable + + + Attribute + + + DynamicAttributes + + + Example + + + TagExtension + + + + tagFileType + https://jakarta.ee/xml/ns/jakartaee + TagFileType + + Description + + + DisplayName + + + Icon + + + Name + + + Path + + + Example + + + TagExtension + + + + functionType + https://jakarta.ee/xml/ns/jakartaee + FunctionType + + Description + + + DisplayName + + + Icon + + + Name + + + FunctionClass + + + FunctionSignature + + + Example + + + FunctionExtension + + + + tld-extensionType + https://jakarta.ee/xml/ns/jakartaee + TldExtensionType + + ExtensionElement + + + + extensibleType + https://jakarta.ee/xml/ns/jakartaee + ExtensibleType + + + fully-qualified-classType + https://jakarta.ee/xml/ns/jakartaee + FullyQualifiedClassType + java.lang.String + + + string + https://jakarta.ee/xml/ns/jakartaee + String + java.lang.String + + + xsdStringType + https://jakarta.ee/xml/ns/jakartaee + XsdStringType + java.lang.String + + + descriptionType + https://jakarta.ee/xml/ns/jakartaee + DescriptionType + java.lang.String + + + display-nameType + https://jakarta.ee/xml/ns/jakartaee + DisplayNameType + java.lang.String + + + iconType + https://jakarta.ee/xml/ns/jakartaee + IconType + + SmallIcon + + + LargeIcon + + + + pathType + https://jakarta.ee/xml/ns/jakartaee + PathType + java.lang.String + + + body-contentType + https://jakarta.ee/xml/ns/jakartaee + BodyContentType + java.lang.String + + + variableType + https://jakarta.ee/xml/ns/jakartaee + VariableType + + Description + + + NameGiven + + + NameFromAttribute + + + VariableClass + + + Declare + + + Scope + + + + tld-attributeType + https://jakarta.ee/xml/ns/jakartaee + TldAttributeType + + Description + + + Name + + + Required + + + Rtexprvalue + + + Type + + + Fragment + + + + generic-booleanType + https://jakarta.ee/xml/ns/jakartaee + GenericBooleanType + java.lang.String + + + java-identifierType + https://jakarta.ee/xml/ns/jakartaee + JavaIdentifierType + java.lang.String + + + variable-scopeType + https://jakarta.ee/xml/ns/jakartaee + VariableScopeType + java.lang.String + + + param-valueType + https://jakarta.ee/xml/ns/jakartaee + ParamValueType + + Description + + + ParamName + + + ParamValue + + + + emptyType + https://jakarta.ee/xml/ns/jakartaee + EmptyType + + + ejb-refType + https://jakarta.ee/xml/ns/jakartaee + EjbRefType + + Description + + + EjbRefName + + + EjbRefType + + + Home + + + Remote + + + EjbLink + + + + remoteType + https://jakarta.ee/xml/ns/jakartaee + RemoteType + java.lang.String + + + res-sharing-scopeType + https://jakarta.ee/xml/ns/jakartaee + ResSharingScopeType + java.lang.String + + + xsdIntegerType + https://jakarta.ee/xml/ns/jakartaee + XsdIntegerType + java.math.BigInteger + + + resource-env-refType + https://jakarta.ee/xml/ns/jakartaee + ResourceEnvRefType + + Description + + + ResourceEnvRefName + + + ResourceEnvRefType + + + + message-destinationType + https://jakarta.ee/xml/ns/jakartaee + MessageDestinationType + + Description + + + DisplayName + + + Icon + + + MessageDestinationName + + + + xsdBooleanType + https://jakarta.ee/xml/ns/jakartaee + XsdBooleanType + boolean + + + run-asType + https://jakarta.ee/xml/ns/jakartaee + RunAsType + + Description + + + RoleName + + + + localType + https://jakarta.ee/xml/ns/jakartaee + LocalType + java.lang.String + + + port-component-refType + https://jakarta.ee/xml/ns/jakartaee + PortComponentRefType + + ServiceEndpointInterface + + + PortComponentLink + + + + message-destination-refType + https://jakarta.ee/xml/ns/jakartaee + MessageDestinationRefType + + Description + + + MessageDestinationRefName + + + MessageDestinationType + + + MessageDestinationUsage + + + MessageDestinationLink + + + + ejb-ref-nameType + https://jakarta.ee/xml/ns/jakartaee + EjbRefNameType + java.lang.String + + + local-homeType + https://jakarta.ee/xml/ns/jakartaee + LocalHomeType + java.lang.String + + + resource-refType + https://jakarta.ee/xml/ns/jakartaee + ResourceRefType + + Description + + + ResRefName + + + ResType + + + ResAuth + + + ResSharingScope + + + + xsdNMTOKENType + https://jakarta.ee/xml/ns/jakartaee + XsdNMTOKENType + java.lang.String + + + ejb-local-refType + https://jakarta.ee/xml/ns/jakartaee + EjbLocalRefType + + Description + + + EjbRefName + + + EjbRefType + + + LocalHome + + + Local + + + EjbLink + + + + ejb-ref-typeType + https://jakarta.ee/xml/ns/jakartaee + EjbRefTypeType + java.lang.String + + + message-destination-typeType + https://jakarta.ee/xml/ns/jakartaee + MessageDestinationTypeType + java.lang.String + + + xsdPositiveIntegerType + https://jakarta.ee/xml/ns/jakartaee + XsdPositiveIntegerType + long + + + xsdNonNegativeIntegerType + https://jakarta.ee/xml/ns/jakartaee + XsdNonNegativeIntegerType + java.math.BigInteger + + + xsdQNameType + https://jakarta.ee/xml/ns/jakartaee + XsdQNameType + java.lang.String + + + res-authType + https://jakarta.ee/xml/ns/jakartaee + ResAuthType + java.lang.String + + + jndi-nameType + https://jakarta.ee/xml/ns/jakartaee + JndiNameType + java.lang.String + + + url-patternType + https://jakarta.ee/xml/ns/jakartaee + UrlPatternType + java.lang.String + + + security-roleType + https://jakarta.ee/xml/ns/jakartaee + SecurityRoleType + + Description + + + RoleName + + + + env-entry-type-valuesType + https://jakarta.ee/xml/ns/jakartaee + EnvEntryTypeValuesType + java.lang.String + + + ejb-linkType + https://jakarta.ee/xml/ns/jakartaee + EjbLinkType + java.lang.String + + + service-refType + https://jakarta.ee/xml/ns/jakartaee + ServiceRefType + + Description + + + DisplayName + + + Icon + + + ServiceRefName + + + ServiceInterface + + + WsdlFile + + + JaxrpcMappingFile + + + ServiceQname + + + PortComponentRef + + + Handler + + + + java-typeType + https://jakarta.ee/xml/ns/jakartaee + JavaTypeType + java.lang.String + + + security-role-refType + https://jakarta.ee/xml/ns/jakartaee + SecurityRoleRefType + + Description + + + RoleName + + + RoleLink + + + + env-entryType + https://jakarta.ee/xml/ns/jakartaee + EnvEntryType + + Description + + + EnvEntryName + + + EnvEntryType + + + EnvEntryValue + + + + true-falseType + https://jakarta.ee/xml/ns/jakartaee + TrueFalseType + boolean + + + message-destination-linkType + https://jakarta.ee/xml/ns/jakartaee + MessageDestinationLinkType + java.lang.String + + + service-ref_handlerType + https://jakarta.ee/xml/ns/jakartaee + ServiceRefHandlerType + + Description + + + DisplayName + + + Icon + + + HandlerName + + + HandlerClass + + + InitParam + + + SoapHeader + + + SoapRole + + + PortName + + + + role-nameType + https://jakarta.ee/xml/ns/jakartaee + RoleNameType + java.lang.String + + + message-destination-usageType + https://jakarta.ee/xml/ns/jakartaee + MessageDestinationUsageType + java.lang.String + + + homeType + https://jakarta.ee/xml/ns/jakartaee + HomeType + java.lang.String + + diff --git a/enterprise/web.core/src/org/netbeans/modules/web/taglib/resources/web-jsptaglibrary_3_1.xsd b/enterprise/web.core/src/org/netbeans/modules/web/taglib/resources/web-jsptaglibrary_3_1.xsd new file mode 100644 index 000000000000..e0dde1a814a8 --- /dev/null +++ b/enterprise/web.core/src/org/netbeans/modules/web/taglib/resources/web-jsptaglibrary_3_1.xsd @@ -0,0 +1,1109 @@ + + + + + + Copyright (c) 2009, 2021 Oracle and/or its affiliates. All rights reserved. + + This program and the accompanying materials are made available under the + terms of the Eclipse Public License v. 2.0, which is available at + http://www.eclipse.org/legal/epl-2.0. + + This Source Code may also be made available under the following Secondary + Licenses when the conditions for such availability set forth in the + Eclipse Public License v. 2.0 are satisfied: GNU General Public License, + version 2 with the GNU Classpath Exception, which is available at + https://www.gnu.org/software/classpath/license.html. + + SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 + + + + + + + + ... + + + The instance documents may indicate the published + version of the schema using xsi:schemaLocation attribute + for Jakarta EE namespace with the following location: + + https://jakarta.ee/xml/ns/jakartaee/web-jsptaglibrary_3_1.xsd + + ]]> + + + + + + + + + + + + + The taglib tag is the document root. + The definition of taglib is provided + by the tldTaglibType. + + + + + + + + The taglib element contains, among other things, tag and + tag-file elements. + The name subelements of these elements must each be unique. + + + + + + + + + + + The taglib element contains function elements. + The name subelements of these elements must each be unique. + + + + + + + + + + + + + + + + Specifies the type of body that is valid for a tag. + This value is used by the JSP container to validate + that a tag invocation has the correct body syntax and + by page composition tools to assist the page author + in providing a valid tag body. + + There are currently four values specified: + + tagdependent The body of the tag is interpreted by the tag + implementation itself, and is most likely + in a different "language", e.g embedded SQL + statements. + + JSP The body of the tag contains nested JSP + syntax. + + empty The body must be empty + + scriptless The body accepts only template text, EL + Expressions, and JSP action elements. No + scripting elements are allowed. + + + + + + + + + + + + + + + + + + + + + Defines the canonical name of a tag or attribute being + defined. + + The name must conform to the lexical rules for an NMTOKEN. + + + + + + + + + + + + + + + + A validator that can be used to validate + the conformance of a JSP page to using this tag library is + defined by a validatorType. + + + + + + + + + + Defines the TagLibraryValidator class that can be used + to validate the conformance of a JSP page to using this + tag library. + + + + + + + + + The init-param element contains a name/value pair as an + initialization param. + + + + + + + + + + + + + + + + The tag defines a unique tag in this tag library. It has one + attribute, id. + + The tag element may have several subelements defining: + + description Optional tag-specific information + + display-name A short name that is intended to be + displayed by tools + + icon Optional icon element that can be used + by tools + + name The unique action name + + tag-class The tag handler class implementing + jakarta.servlet.jsp.tagext.JspTag + + tei-class An optional subclass of + jakarta.servlet.jsp.tagext.TagExtraInfo + + body-content The body content type + + variable Optional scripting variable information + + attribute All attributes of this action that are + evaluated prior to invocation. + + dynamic-attributes Whether this tag supports additional + attributes with dynamic names. If + true, the tag-class must implement the + jakarta.servlet.jsp.tagext.DynamicAttributes + interface. Defaults to false. + + example Optional informal description of an + example of a use of this tag + + tag-extension Zero or more extensions that provide extra + information about this tag, for tool + consumption + + + + + + + + + + + Defines the subclass of jakarta.servlet.jsp.tagext.JspTag + that implements the request time semantics for + this tag. (required) + + + + + + + + + Defines the subclass of jakarta.servlet.jsp.tagext.TagExtraInfo + for this tag. (optional) + + If this is not given, the class is not consulted at + translation time. + + + + + + + + + Specifies the format for the body of this tag. + The default in JSP 1.2 was "JSP" but because this + is an invalid setting for simple tag handlers, there + is no longer a default in JSP 2.0. A reasonable + default for simple tag handlers is "scriptless" if + the tag can have a body. + + + + + + + + + + + + The example element contains an informal description + of an example of the use of a tag. + + + + + + + + + Tag extensions are for tool use only and must not affect + the behavior of a container. + + + + + + + + + + + + + + + + Defines an action in this tag library that is implemented + as a .tag file. + + The tag-file element has two required subelements: + + description Optional tag-specific information + + display-name A short name that is intended to be + displayed by tools + + icon Optional icon element that can be used + by tools + + name The unique action name + + path Where to find the .tag file implementing this + action, relative to the root of the web + application or the root of the JAR file for a + tag library packaged in a JAR. This must + begin with /WEB-INF/tags if the .tag file + resides in the WAR, or /META-INF/tags if the + .tag file resides in a JAR. + + example Optional informal description of an + example of a use of this tag + + tag-extension Zero or more extensions that provide extra + information about this tag, for tool + consumption + + + + + + + + + + + + The example element contains an informal description + of an example of the use of a tag. + + + + + + + + + Tag extensions are for tool use only and must not affect + the behavior of a container. + + + + + + + + + + + + + + + + The function element is used to provide information on each + function in the tag library that is to be exposed to the EL. + + The function element may have several subelements defining: + + description Optional tag-specific information + + display-name A short name that is intended to be + displayed by tools + + icon Optional icon element that can be used + by tools + + name A unique name for this function + + function-class Provides the name of the Java class that + implements the function + + function-signature Provides the signature, as in the Java + Language Specification, of the Java + method that is to be used to implement + the function. + + example Optional informal description of an + example of a use of this function + + function-extension Zero or more extensions that provide extra + information about this function, for tool + consumption + + + + + + + + + + A unique name for this function. + + + + + + + + + Provides the fully-qualified class name of the Java + class containing the static method that implements + the function. + + + + + + + + + Provides the signature, of the static Java method that is + to be used to implement the function. The syntax of the + function-signature element is as follows: + + FunctionSignature ::= ReturnType S MethodName S? + '(' S? Parameters? S? ')' + + ReturnType ::= Type + + MethodName ::= Identifier + + Parameters ::= Parameter + | ( Parameter S? ',' S? Parameters ) + + Parameter ::= Type + + Where: + + * Type is a basic type or a fully qualified + Java class name (including package name), + as per the 'Type' production in the Java + Language Specification, Second Edition, + Chapter 18. + + * Identifier is a Java identifier, as per + the 'Identifier' production in the Java + Language Specification, Second + Edition, Chapter 18. + + Example: + + java.lang.String nickName( java.lang.String, int ) + + + + + + + + + The example element contains an informal description + of an example of the use of this function. + + + + + + + + + Function extensions are for tool use only and must not + affect the behavior of a container. + + + + + + + + + + + + + + + + The taglib tag is the document root, it defines: + + description a simple string describing the "use" of this + taglib, should be user discernable + + display-name the display-name element contains a + short name that is intended to be displayed + by tools + + icon optional icon that can be used by tools + + tlib-version the version of the tag library implementation + + short-name a simple default short name that could be + used by a JSP authoring tool to create + names with a mnemonic value; for example, + the it may be used as the prefered prefix + value in taglib directives + + uri a uri uniquely identifying this taglib + + validator optional TagLibraryValidator information + + listener optional event listener specification + + tag tags in this tag library + + tag-file tag files in this tag library + + function zero or more EL functions defined in this + tag library + + taglib-extension zero or more extensions that provide extra + information about this taglib, for tool + consumption + + + + + + + + + + Describes this version (number) of the taglibrary. + It is described as a dewey decimal. + + + + + + + + + Defines a simple default name that could be used by + a JSP authoring tool to create names with a + mnemonicvalue; for example, it may be used as the + preferred prefix value in taglib directives. Do + not use white space, and do not start with digits + or underscore. + + + + + + + + + Defines a public URI that uniquely identifies this + version of the taglibrary. Leave it empty if it + does not apply. + + + + + + + + + + + + + + + + Taglib extensions are for tool use only and must not + affect the behavior of a container. + + + + + + + + + + Describes the JSP version (number) this taglibrary + requires in order to function (dewey decimal) + + + + + + + + + + + + + + + The variableType provides information on the scripting + variables defined by using this tag. It is a (translation + time) error for a tag that has one or more variable + subelements to have a TagExtraInfo class that returns a + non-null value from a call to getVariableInfo(). + + The subelements of variableType are of the form: + + description Optional description of this + variable + + name-given The variable name as a constant + + name-from-attribute The name of an attribute whose + (translation time) value will + give the name of the + variable. One of name-given or + name-from-attribute is required. + + variable-class Name of the class of the variable. + java.lang.String is default. + + declare Whether the variable is declared + or not. True is the default. + + scope The scope of the scripting varaible + defined. NESTED is default. + + + + + + + + + + + The name for the scripting variable. + + + + + + + + + The name of an attribute whose + (translation-time) value will give the name of + the variable. + + + + + + + + + + The optional name of the class for the scripting + variable. The default is java.lang.String. + + + + + + + + + Whether the scripting variable is to be defined + or not. See TagExtraInfo for details. This + element is optional and "true" is the default. + + + + + + + + + The element is optional and "NESTED" is the default. + + + + + + + + + + + + + + + + This type defines scope of the scripting variable. See + TagExtraInfo for details. The allowed values are, + "NESTED", "AT_BEGIN" and "AT_END". + + + + + + + + + + + + + + + + + + + + The attribute element defines an attribute for the nesting + tag. The attribute element may have several subelements + defining: + + description a description of the attribute + + name the name of the attribute + + required whether the attribute is required or + optional + + rtexprvalue whether the attribute is a runtime attribute + + type the type of the attributes + + fragment whether this attribute is a fragment + + deferred-value present if this attribute is to be parsed as a + jakarta.el.ValueExpression + + deferred-method present if this attribute is to be parsed as a + jakarta.el.MethodExpression + + + + + + + + + + + Defines if the nesting attribute is required or + optional. + + If not present then the default is "false", i.e + the attribute is optional. + + + + + + + + + + + + Defines if the nesting attribute can have scriptlet + expressions as a value, i.e the value of the + attribute may be dynamically calculated at request + time, as opposed to a static value determined at + translation time. + If not present then the default is "false", i.e the + attribute has a static value + + + + + + + + + Defines the Java type of the attributes value. + If this element is omitted, the expected type is + assumed to be "java.lang.Object". + + + + + + + + + + + Present if the value for this attribute is to be + passed to the tag handler as a + jakarta.el.ValueExpression. This allows for deferred + evaluation of EL expressions. An optional subelement + will contain the expected type that the value will + be coerced to after evaluation of the expression. + The type defaults to Object if one is not provided. + + + + + + + + + Present if the value for this attribute is to be + passed to the tag handler as a + jakarta.el.MethodExpression. This allows for deferred + evaluation of an EL expression that identifies a + method to be invoked on an Object. An optional + subelement will contain the expected method + signature. The signature defaults to "void method()" + if one is not provided. + + + + + + + + + + + "true" if this attribute is of type + jakarta.servlet.jsp.tagext.JspFragment, representing dynamic + content that can be re-evaluated as many times + as needed by the tag handler. If omitted or "false", + the default is still type="java.lang.String" + + + + + + + + + + + + + + + + + Defines information about how to provide the value for a + tag handler attribute that accepts a jakarta.el.ValueExpression. + + The deferred-value element has one optional subelement: + + type the expected type of the attribute + + + + + + + + + The fully-qualified name of the Java type that is the + expected type for this deferred expression. If this + element is omitted, the expected type is assumed to be + "java.lang.Object". + + + + + + + + + + + + + + + + Defines information about how to provide the value for a + tag handler attribute that accepts a jakarta.el.MethodExpression. + + The deferred-method element has one optional subelement: + + method-signature Provides the signature, as in the Java + Language Specifies, that is expected for + the method being identified by the + expression. + + + + + + + + + Provides the expected signature of the method identified + by the jakarta.el.MethodExpression. + + This disambiguates overloaded methods and ensures that + the return value is of the expected type. + + The syntax of the method-signature element is identical + to that of the function-signature element. See the + documentation for function-signature for more details. + + The name of the method is for documentation purposes only + and is ignored by the JSP container. + + Example: + + boolean validate(java.lang.String) + + + + + + + + + + + + + + + + The tld-extensionType is used to indicate + extensions to a specific TLD element. + + It is used by elements to designate an extension block + that is targeted to a specific extension designated by + a set of extension elements that are declared by a + namespace. The namespace identifies the extension to + the tool that processes the extension. + + The type of the extension-element is abstract. Therefore, + a concrete type must be specified by the TLD using + xsi:type attribute for each extension-element. + + + + + + + + + + + + + + + + + + The extensibleType is an abstract base type that is used to + define the type of extension-elements. Instance documents + must substitute a known type to define the extension by + using xsi:type attribute to define the actual type of + extension-elements. + + + + + + + diff --git a/enterprise/web.core/src/org/netbeans/modules/web/taglib/resources/web-jsptaglibrary_4_0.mdd b/enterprise/web.core/src/org/netbeans/modules/web/taglib/resources/web-jsptaglibrary_4_0.mdd new file mode 100644 index 000000000000..ad9a3ae3eb4d --- /dev/null +++ b/enterprise/web.core/src/org/netbeans/modules/web/taglib/resources/web-jsptaglibrary_4_0.mdd @@ -0,0 +1,745 @@ + + + + + taglib + https://jakarta.ee/xml/ns/jakartaee + Taglib + + Description + + + DisplayName + + + Icon + + + TlibVersion + + + ShortName + + + Uri + + + Validator + + + Listener + + + Tag + + + TagFile + + + Function + + + TaglibExtension + + + + dewey-versionType + https://jakarta.ee/xml/ns/jakartaee + DeweyVersionType + java.math.BigDecimal + + + tld-canonical-nameType + https://jakarta.ee/xml/ns/jakartaee + TldCanonicalNameType + java.lang.String + + + xsdAnyURIType + https://jakarta.ee/xml/ns/jakartaee + XsdAnyURIType + java.lang.String + + + validatorType + https://jakarta.ee/xml/ns/jakartaee + ValidatorType + + Description + + + ValidatorClass + + + InitParam + + + + listenerType + https://jakarta.ee/xml/ns/jakartaee + ListenerType + + Description + + + DisplayName + + + Icon + + + ListenerClass + + + + tagType + https://jakarta.ee/xml/ns/jakartaee + TagType + + Description + + + DisplayName + + + Icon + + + Name + + + TagClass + + + TeiClass + + + BodyContent + + + Variable + + + Attribute + + + DynamicAttributes + + + Example + + + TagExtension + + + + tagFileType + https://jakarta.ee/xml/ns/jakartaee + TagFileType + + Description + + + DisplayName + + + Icon + + + Name + + + Path + + + Example + + + TagExtension + + + + functionType + https://jakarta.ee/xml/ns/jakartaee + FunctionType + + Description + + + DisplayName + + + Icon + + + Name + + + FunctionClass + + + FunctionSignature + + + Example + + + FunctionExtension + + + + tld-extensionType + https://jakarta.ee/xml/ns/jakartaee + TldExtensionType + + ExtensionElement + + + + extensibleType + https://jakarta.ee/xml/ns/jakartaee + ExtensibleType + + + fully-qualified-classType + https://jakarta.ee/xml/ns/jakartaee + FullyQualifiedClassType + java.lang.String + + + string + https://jakarta.ee/xml/ns/jakartaee + String + java.lang.String + + + xsdStringType + https://jakarta.ee/xml/ns/jakartaee + XsdStringType + java.lang.String + + + descriptionType + https://jakarta.ee/xml/ns/jakartaee + DescriptionType + java.lang.String + + + display-nameType + https://jakarta.ee/xml/ns/jakartaee + DisplayNameType + java.lang.String + + + iconType + https://jakarta.ee/xml/ns/jakartaee + IconType + + SmallIcon + + + LargeIcon + + + + pathType + https://jakarta.ee/xml/ns/jakartaee + PathType + java.lang.String + + + body-contentType + https://jakarta.ee/xml/ns/jakartaee + BodyContentType + java.lang.String + + + variableType + https://jakarta.ee/xml/ns/jakartaee + VariableType + + Description + + + NameGiven + + + NameFromAttribute + + + VariableClass + + + Declare + + + Scope + + + + tld-attributeType + https://jakarta.ee/xml/ns/jakartaee + TldAttributeType + + Description + + + Name + + + Required + + + Rtexprvalue + + + Type + + + Fragment + + + + generic-booleanType + https://jakarta.ee/xml/ns/jakartaee + GenericBooleanType + java.lang.String + + + java-identifierType + https://jakarta.ee/xml/ns/jakartaee + JavaIdentifierType + java.lang.String + + + variable-scopeType + https://jakarta.ee/xml/ns/jakartaee + VariableScopeType + java.lang.String + + + param-valueType + https://jakarta.ee/xml/ns/jakartaee + ParamValueType + + Description + + + ParamName + + + ParamValue + + + + emptyType + https://jakarta.ee/xml/ns/jakartaee + EmptyType + + + ejb-refType + https://jakarta.ee/xml/ns/jakartaee + EjbRefType + + Description + + + EjbRefName + + + EjbRefType + + + Home + + + Remote + + + EjbLink + + + + remoteType + https://jakarta.ee/xml/ns/jakartaee + RemoteType + java.lang.String + + + res-sharing-scopeType + https://jakarta.ee/xml/ns/jakartaee + ResSharingScopeType + java.lang.String + + + xsdIntegerType + https://jakarta.ee/xml/ns/jakartaee + XsdIntegerType + java.math.BigInteger + + + resource-env-refType + https://jakarta.ee/xml/ns/jakartaee + ResourceEnvRefType + + Description + + + ResourceEnvRefName + + + ResourceEnvRefType + + + + message-destinationType + https://jakarta.ee/xml/ns/jakartaee + MessageDestinationType + + Description + + + DisplayName + + + Icon + + + MessageDestinationName + + + + xsdBooleanType + https://jakarta.ee/xml/ns/jakartaee + XsdBooleanType + boolean + + + run-asType + https://jakarta.ee/xml/ns/jakartaee + RunAsType + + Description + + + RoleName + + + + localType + https://jakarta.ee/xml/ns/jakartaee + LocalType + java.lang.String + + + port-component-refType + https://jakarta.ee/xml/ns/jakartaee + PortComponentRefType + + ServiceEndpointInterface + + + PortComponentLink + + + + message-destination-refType + https://jakarta.ee/xml/ns/jakartaee + MessageDestinationRefType + + Description + + + MessageDestinationRefName + + + MessageDestinationType + + + MessageDestinationUsage + + + MessageDestinationLink + + + + ejb-ref-nameType + https://jakarta.ee/xml/ns/jakartaee + EjbRefNameType + java.lang.String + + + local-homeType + https://jakarta.ee/xml/ns/jakartaee + LocalHomeType + java.lang.String + + + resource-refType + https://jakarta.ee/xml/ns/jakartaee + ResourceRefType + + Description + + + ResRefName + + + ResType + + + ResAuth + + + ResSharingScope + + + + xsdNMTOKENType + https://jakarta.ee/xml/ns/jakartaee + XsdNMTOKENType + java.lang.String + + + ejb-local-refType + https://jakarta.ee/xml/ns/jakartaee + EjbLocalRefType + + Description + + + EjbRefName + + + EjbRefType + + + LocalHome + + + Local + + + EjbLink + + + + ejb-ref-typeType + https://jakarta.ee/xml/ns/jakartaee + EjbRefTypeType + java.lang.String + + + message-destination-typeType + https://jakarta.ee/xml/ns/jakartaee + MessageDestinationTypeType + java.lang.String + + + xsdPositiveIntegerType + https://jakarta.ee/xml/ns/jakartaee + XsdPositiveIntegerType + long + + + xsdNonNegativeIntegerType + https://jakarta.ee/xml/ns/jakartaee + XsdNonNegativeIntegerType + java.math.BigInteger + + + xsdQNameType + https://jakarta.ee/xml/ns/jakartaee + XsdQNameType + java.lang.String + + + res-authType + https://jakarta.ee/xml/ns/jakartaee + ResAuthType + java.lang.String + + + jndi-nameType + https://jakarta.ee/xml/ns/jakartaee + JndiNameType + java.lang.String + + + url-patternType + https://jakarta.ee/xml/ns/jakartaee + UrlPatternType + java.lang.String + + + security-roleType + https://jakarta.ee/xml/ns/jakartaee + SecurityRoleType + + Description + + + RoleName + + + + env-entry-type-valuesType + https://jakarta.ee/xml/ns/jakartaee + EnvEntryTypeValuesType + java.lang.String + + + ejb-linkType + https://jakarta.ee/xml/ns/jakartaee + EjbLinkType + java.lang.String + + + service-refType + https://jakarta.ee/xml/ns/jakartaee + ServiceRefType + + Description + + + DisplayName + + + Icon + + + ServiceRefName + + + ServiceInterface + + + WsdlFile + + + JaxrpcMappingFile + + + ServiceQname + + + PortComponentRef + + + Handler + + + + java-typeType + https://jakarta.ee/xml/ns/jakartaee + JavaTypeType + java.lang.String + + + security-role-refType + https://jakarta.ee/xml/ns/jakartaee + SecurityRoleRefType + + Description + + + RoleName + + + RoleLink + + + + env-entryType + https://jakarta.ee/xml/ns/jakartaee + EnvEntryType + + Description + + + EnvEntryName + + + EnvEntryType + + + EnvEntryValue + + + + true-falseType + https://jakarta.ee/xml/ns/jakartaee + TrueFalseType + boolean + + + message-destination-linkType + https://jakarta.ee/xml/ns/jakartaee + MessageDestinationLinkType + java.lang.String + + + service-ref_handlerType + https://jakarta.ee/xml/ns/jakartaee + ServiceRefHandlerType + + Description + + + DisplayName + + + Icon + + + HandlerName + + + HandlerClass + + + InitParam + + + SoapHeader + + + SoapRole + + + PortName + + + + role-nameType + https://jakarta.ee/xml/ns/jakartaee + RoleNameType + java.lang.String + + + message-destination-usageType + https://jakarta.ee/xml/ns/jakartaee + MessageDestinationUsageType + java.lang.String + + + homeType + https://jakarta.ee/xml/ns/jakartaee + HomeType + java.lang.String + + diff --git a/enterprise/web.core/src/org/netbeans/modules/web/taglib/resources/web-jsptaglibrary_4_0.xsd b/enterprise/web.core/src/org/netbeans/modules/web/taglib/resources/web-jsptaglibrary_4_0.xsd new file mode 100644 index 000000000000..4c210ddd4f41 --- /dev/null +++ b/enterprise/web.core/src/org/netbeans/modules/web/taglib/resources/web-jsptaglibrary_4_0.xsd @@ -0,0 +1,1109 @@ + + + + + + Copyright (c) 2009, 2021 Oracle and/or its affiliates. All rights reserved. + + This program and the accompanying materials are made available under the + terms of the Eclipse Public License v. 2.0, which is available at + http://www.eclipse.org/legal/epl-2.0. + + This Source Code may also be made available under the following Secondary + Licenses when the conditions for such availability set forth in the + Eclipse Public License v. 2.0 are satisfied: GNU General Public License, + version 2 with the GNU Classpath Exception, which is available at + https://www.gnu.org/software/classpath/license.html. + + SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 + + + + + + + + ... + + + The instance documents may indicate the published + version of the schema using xsi:schemaLocation attribute + for Jakarta EE namespace with the following location: + + https://jakarta.ee/xml/ns/jakartaee/web-jsptaglibrary_4_0.xsd + + ]]> + + + + + + + + + + + + + The taglib tag is the document root. + The definition of taglib is provided + by the tldTaglibType. + + + + + + + + The taglib element contains, among other things, tag and + tag-file elements. + The name subelements of these elements must each be unique. + + + + + + + + + + + The taglib element contains function elements. + The name subelements of these elements must each be unique. + + + + + + + + + + + + + + + + Specifies the type of body that is valid for a tag. + This value is used by the JSP container to validate + that a tag invocation has the correct body syntax and + by page composition tools to assist the page author + in providing a valid tag body. + + There are currently four values specified: + + tagdependent The body of the tag is interpreted by the tag + implementation itself, and is most likely + in a different "language", e.g embedded SQL + statements. + + JSP The body of the tag contains nested JSP + syntax. + + empty The body must be empty + + scriptless The body accepts only template text, EL + Expressions, and JSP action elements. No + scripting elements are allowed. + + + + + + + + + + + + + + + + + + + + + Defines the canonical name of a tag or attribute being + defined. + + The name must conform to the lexical rules for an NMTOKEN. + + + + + + + + + + + + + + + + A validator that can be used to validate + the conformance of a JSP page to using this tag library is + defined by a validatorType. + + + + + + + + + + Defines the TagLibraryValidator class that can be used + to validate the conformance of a JSP page to using this + tag library. + + + + + + + + + The init-param element contains a name/value pair as an + initialization param. + + + + + + + + + + + + + + + + The tag defines a unique tag in this tag library. It has one + attribute, id. + + The tag element may have several subelements defining: + + description Optional tag-specific information + + display-name A short name that is intended to be + displayed by tools + + icon Optional icon element that can be used + by tools + + name The unique action name + + tag-class The tag handler class implementing + jakarta.servlet.jsp.tagext.JspTag + + tei-class An optional subclass of + jakarta.servlet.jsp.tagext.TagExtraInfo + + body-content The body content type + + variable Optional scripting variable information + + attribute All attributes of this action that are + evaluated prior to invocation. + + dynamic-attributes Whether this tag supports additional + attributes with dynamic names. If + true, the tag-class must implement the + jakarta.servlet.jsp.tagext.DynamicAttributes + interface. Defaults to false. + + example Optional informal description of an + example of a use of this tag + + tag-extension Zero or more extensions that provide extra + information about this tag, for tool + consumption + + + + + + + + + + + Defines the subclass of jakarta.servlet.jsp.tagext.JspTag + that implements the request time semantics for + this tag. (required) + + + + + + + + + Defines the subclass of jakarta.servlet.jsp.tagext.TagExtraInfo + for this tag. (optional) + + If this is not given, the class is not consulted at + translation time. + + + + + + + + + Specifies the format for the body of this tag. + The default in JSP 1.2 was "JSP" but because this + is an invalid setting for simple tag handlers, there + is no longer a default in JSP 2.0. A reasonable + default for simple tag handlers is "scriptless" if + the tag can have a body. + + + + + + + + + + + + The example element contains an informal description + of an example of the use of a tag. + + + + + + + + + Tag extensions are for tool use only and must not affect + the behavior of a container. + + + + + + + + + + + + + + + + Defines an action in this tag library that is implemented + as a .tag file. + + The tag-file element has two required subelements: + + description Optional tag-specific information + + display-name A short name that is intended to be + displayed by tools + + icon Optional icon element that can be used + by tools + + name The unique action name + + path Where to find the .tag file implementing this + action, relative to the root of the web + application or the root of the JAR file for a + tag library packaged in a JAR. This must + begin with /WEB-INF/tags if the .tag file + resides in the WAR, or /META-INF/tags if the + .tag file resides in a JAR. + + example Optional informal description of an + example of a use of this tag + + tag-extension Zero or more extensions that provide extra + information about this tag, for tool + consumption + + + + + + + + + + + + The example element contains an informal description + of an example of the use of a tag. + + + + + + + + + Tag extensions are for tool use only and must not affect + the behavior of a container. + + + + + + + + + + + + + + + + The function element is used to provide information on each + function in the tag library that is to be exposed to the EL. + + The function element may have several subelements defining: + + description Optional tag-specific information + + display-name A short name that is intended to be + displayed by tools + + icon Optional icon element that can be used + by tools + + name A unique name for this function + + function-class Provides the name of the Java class that + implements the function + + function-signature Provides the signature, as in the Java + Language Specification, of the Java + method that is to be used to implement + the function. + + example Optional informal description of an + example of a use of this function + + function-extension Zero or more extensions that provide extra + information about this function, for tool + consumption + + + + + + + + + + A unique name for this function. + + + + + + + + + Provides the fully-qualified class name of the Java + class containing the static method that implements + the function. + + + + + + + + + Provides the signature, of the static Java method that is + to be used to implement the function. The syntax of the + function-signature element is as follows: + + FunctionSignature ::= ReturnType S MethodName S? + '(' S? Parameters? S? ')' + + ReturnType ::= Type + + MethodName ::= Identifier + + Parameters ::= Parameter + | ( Parameter S? ',' S? Parameters ) + + Parameter ::= Type + + Where: + + * Type is a basic type or a fully qualified + Java class name (including package name), + as per the 'Type' production in the Java + Language Specification, Second Edition, + Chapter 18. + + * Identifier is a Java identifier, as per + the 'Identifier' production in the Java + Language Specification, Second + Edition, Chapter 18. + + Example: + + java.lang.String nickName( java.lang.String, int ) + + + + + + + + + The example element contains an informal description + of an example of the use of this function. + + + + + + + + + Function extensions are for tool use only and must not + affect the behavior of a container. + + + + + + + + + + + + + + + + The taglib tag is the document root, it defines: + + description a simple string describing the "use" of this + taglib, should be user discernable + + display-name the display-name element contains a + short name that is intended to be displayed + by tools + + icon optional icon that can be used by tools + + tlib-version the version of the tag library implementation + + short-name a simple default short name that could be + used by a JSP authoring tool to create + names with a mnemonic value; for example, + the it may be used as the prefered prefix + value in taglib directives + + uri a uri uniquely identifying this taglib + + validator optional TagLibraryValidator information + + listener optional event listener specification + + tag tags in this tag library + + tag-file tag files in this tag library + + function zero or more EL functions defined in this + tag library + + taglib-extension zero or more extensions that provide extra + information about this taglib, for tool + consumption + + + + + + + + + + Describes this version (number) of the taglibrary. + It is described as a dewey decimal. + + + + + + + + + Defines a simple default name that could be used by + a JSP authoring tool to create names with a + mnemonicvalue; for example, it may be used as the + preferred prefix value in taglib directives. Do + not use white space, and do not start with digits + or underscore. + + + + + + + + + Defines a public URI that uniquely identifies this + version of the taglibrary. Leave it empty if it + does not apply. + + + + + + + + + + + + + + + + Taglib extensions are for tool use only and must not + affect the behavior of a container. + + + + + + + + + + Describes the JSP version (number) this taglibrary + requires in order to function (dewey decimal) + + + + + + + + + + + + + + + The variableType provides information on the scripting + variables defined by using this tag. It is a (translation + time) error for a tag that has one or more variable + subelements to have a TagExtraInfo class that returns a + non-null value from a call to getVariableInfo(). + + The subelements of variableType are of the form: + + description Optional description of this + variable + + name-given The variable name as a constant + + name-from-attribute The name of an attribute whose + (translation time) value will + give the name of the + variable. One of name-given or + name-from-attribute is required. + + variable-class Name of the class of the variable. + java.lang.String is default. + + declare Whether the variable is declared + or not. True is the default. + + scope The scope of the scripting varaible + defined. NESTED is default. + + + + + + + + + + + The name for the scripting variable. + + + + + + + + + The name of an attribute whose + (translation-time) value will give the name of + the variable. + + + + + + + + + + The optional name of the class for the scripting + variable. The default is java.lang.String. + + + + + + + + + Whether the scripting variable is to be defined + or not. See TagExtraInfo for details. This + element is optional and "true" is the default. + + + + + + + + + The element is optional and "NESTED" is the default. + + + + + + + + + + + + + + + + This type defines scope of the scripting variable. See + TagExtraInfo for details. The allowed values are, + "NESTED", "AT_BEGIN" and "AT_END". + + + + + + + + + + + + + + + + + + + + The attribute element defines an attribute for the nesting + tag. The attribute element may have several subelements + defining: + + description a description of the attribute + + name the name of the attribute + + required whether the attribute is required or + optional + + rtexprvalue whether the attribute is a runtime attribute + + type the type of the attributes + + fragment whether this attribute is a fragment + + deferred-value present if this attribute is to be parsed as a + jakarta.el.ValueExpression + + deferred-method present if this attribute is to be parsed as a + jakarta.el.MethodExpression + + + + + + + + + + + Defines if the nesting attribute is required or + optional. + + If not present then the default is "false", i.e + the attribute is optional. + + + + + + + + + + + + Defines if the nesting attribute can have scriptlet + expressions as a value, i.e the value of the + attribute may be dynamically calculated at request + time, as opposed to a static value determined at + translation time. + If not present then the default is "false", i.e the + attribute has a static value + + + + + + + + + Defines the Java type of the attributes value. + If this element is omitted, the expected type is + assumed to be "java.lang.Object". + + + + + + + + + + + Present if the value for this attribute is to be + passed to the tag handler as a + jakarta.el.ValueExpression. This allows for deferred + evaluation of EL expressions. An optional subelement + will contain the expected type that the value will + be coerced to after evaluation of the expression. + The type defaults to Object if one is not provided. + + + + + + + + + Present if the value for this attribute is to be + passed to the tag handler as a + jakarta.el.MethodExpression. This allows for deferred + evaluation of an EL expression that identifies a + method to be invoked on an Object. An optional + subelement will contain the expected method + signature. The signature defaults to "void method()" + if one is not provided. + + + + + + + + + + + "true" if this attribute is of type + jakarta.servlet.jsp.tagext.JspFragment, representing dynamic + content that can be re-evaluated as many times + as needed by the tag handler. If omitted or "false", + the default is still type="java.lang.String" + + + + + + + + + + + + + + + + + Defines information about how to provide the value for a + tag handler attribute that accepts a jakarta.el.ValueExpression. + + The deferred-value element has one optional subelement: + + type the expected type of the attribute + + + + + + + + + The fully-qualified name of the Java type that is the + expected type for this deferred expression. If this + element is omitted, the expected type is assumed to be + "java.lang.Object". + + + + + + + + + + + + + + + + Defines information about how to provide the value for a + tag handler attribute that accepts a jakarta.el.MethodExpression. + + The deferred-method element has one optional subelement: + + method-signature Provides the signature, as in the Java + Language Specifies, that is expected for + the method being identified by the + expression. + + + + + + + + + Provides the expected signature of the method identified + by the jakarta.el.MethodExpression. + + This disambiguates overloaded methods and ensures that + the return value is of the expected type. + + The syntax of the method-signature element is identical + to that of the function-signature element. See the + documentation for function-signature for more details. + + The name of the method is for documentation purposes only + and is ignored by the JSP container. + + Example: + + boolean validate(java.lang.String) + + + + + + + + + + + + + + + + The tld-extensionType is used to indicate + extensions to a specific TLD element. + + It is used by elements to designate an extension block + that is targeted to a specific extension designated by + a set of extension elements that are declared by a + namespace. The namespace identifies the extension to + the tool that processes the extension. + + The type of the extension-element is abstract. Therefore, + a concrete type must be specified by the TLD using + xsi:type attribute for each extension-element. + + + + + + + + + + + + + + + + + + The extensibleType is an abstract base type that is used to + define the type of extension-elements. Instance documents + must substitute a known type to define the extension by + using xsi:type attribute to define the actual type of + extension-elements. + + + + + + +