2011-05-26 12 views
6

He escrito mi etiquetas JSP con la siguiente TLD:etiquetas JSP: falta de esquemas de DTD/XML

<?xml version="1.0" encoding="UTF-8"?> 
<taglib 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee web-jsptaglibrary_2_1.xsd" 
    xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    version="2.1"> 
    <tlibversion>1.0</tlibversion> 
    <jspversion>2.1</jspversion> 
    ... 

Ahora Eclipse Helios se queja de que "No hay restricciones gramaticales (DTD o esquema XML) detectados por la documento."

Sé cómo desactivar la advertencia, en su lugar me preguntaba cómo resolver el problema al proporcionar DTD o información de esquema.

Por cierto, en la pieza anterior de XML que tienen:

xsi:schemaLocation="http://java.sun.com/xml/ns/javaee web-jsptaglibrary_2_1.xsd" 

pero no parece ayudar.

ACTUALIZACIÓN en la sugerencia de Pedro I fue a ver en mi Ventana> Preferencias> XML> Catálogo XML y me encontré con la siguiente que puede encajar:

Entry element: Public 
Location: dtdsAndSchemas/web-jsptaglibrary_1_2.dtd in jar file 
usr/local/eclipse/plugins/org.eclipse.jst.standard.schemas_1.1.0.v201003031644.jar 
URI:  jar:file:/usr/local/eclipse/plugins/org 
    .eclipse.jst.standard.schemas_1.1.0.v201003031644.jar!/dtdsAndSchemas 
    /web-jsptaglibrary_1_2.dtd 
Key type: Public ID 
Key: -//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN 

así que traté de añadir lo siguiente a mi TLD :

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN" 
"http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_2.dtd"> 

Ahora he los siguientes errores:

anotaciones múltiples que se encuentran en esta línea:

  • El atributo "xsi: schemaLocation" debe declararse para el tipo de elemento "taglib".
  • El atributo "versión" debe declararse para el tipo de elemento "taglib".
  • El atributo "xmlns" con el valor "http://java.sun.com/xml/ns/javaee" debe tener el valor "http://java.sun.com/JSP/ TagLibraryDescriptor".

  • schema_reference.4: No se pudo leer documento de esquema 'web-jsptaglibrary_2_1.xsd', porque

    1) no pudo encontrar el documento; 2) el documento no se pudo leer; 3) el elemento raíz del documento no lo es.

  • El contenido del elemento tipo "taglib" debe coincidir con "(tlib-version, jsp-version, short-name, uri?, Display-name?, Small-icon?, Large-icon?, Description ?, validador?, oyente *, etiqueta +) ".

  • El atributo "xmlns: xsi" debe declararse para el tipo de elemento "taglib".
+0

Mi primera pregunta sería, ¿está utilizando Eclipse para desarrolladores de Java EE? –

+0

Sí, descargué el paquete para Java EE. – stivlo

Respuesta

1

Si Eclipse no se recupera automáticamente el XSD de la biblioteca, siempre se puede añadir de forma manual: ventana Catálogo> Preferencias> XML> XML

En mi caso ya estaba presente en el plugin sección. Probablemente llegó con uno de los plugins Eclipse Java EE.

+0

Gracias, actualicé las preguntas, parece que tengo más problemas ahora :-) – stivlo

+0

Al final estoy aceptando su respuesta, porque respondió mi pregunta original, incluso si no pude utilizar su sugerencia, porque introdujo más problemas. – stivlo

+0

Lamento no haber respondido su problema de seguimiento. Se perdió en algún lado. Sugeriría una reinstalación completa de Eclipse. Parece que hay algo completamente desordenado con el validador XML o los archivos J2EE XSD – Peter

13

No me molesté en mirar este problema durante más de un mes, porque de todos modos todo estaba funcionando en Tomcat. Recientemente probé GlassFish y JBoss. Si bien GlassFish 3.1.1 no se quejó, JBoss 7.0 se negó a ejecutar la aplicación debido a problemas de tld. Mientras tanto, también he actualizado Eclipse Helios a Indigo.

Descubrí que estaba usando DTD y Schema al mismo tiempo, lo que no puede ser bueno. Me deshice de la DTD y guardé solo el Esquema. Tuve que cambiar el nombre de algunas etiquetas, como tlibversion a tlib-version, shortname a short-name, bodycontent a body-content, tagclass a tag-class, eliminar la etiqueta de información, que sustituí con comentarios XML. Supongo que es probablemente una versión más nueva de las especificaciones, porque en el ejemplo que seguí se nombraron sin guiones.

Después de eso, todo funcionó: Eclipse ya no daba ninguna advertencia, JBoss ejecutó la aplicación a la perfección. Para referencia aquí es el tld de trabajo:

<?xml version="1.0" encoding="UTF-8"?> 
<taglib 
     xsi:schemaLocation=" 
      http://java.sun.com/xml/ns/javaee 
      http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd" 
     xmlns="http://java.sun.com/xml/ns/javaee" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     version="2.1"> 
    <tlib-version>1.0</tlib-version> 
    <short-name>StivloTags</short-name> 
    <uri>http://www.stefanolocati.it/</uri> 

    <!-- Example from http://www.stardeveloper.com/articles/display.html?article=2001081301&amp;page=1 --> 
    <tag> 
     <name>firstTag</name> 
     <tag-class>obliquid.tag.FirstTag</tag-class> 
     <body-content>empty</body-content> 
     <attribute> 
      <name>name</name> 
      <required>false</required> 
     </attribute> 
    </tag> 

    <!-- Truncate text after maxLength or 80 chars, adding "&amp;hellip;" if the the text was longer --> 
    <tag> 
     <name>ellipsis</name> 
     <tag-class>obliquid.tag.Ellipsis</tag-class> 
     <body-content>scriptless</body-content> 
     <attribute> 
      <name>maxLength</name> 
      <required>false</required> 
     </attribute> 
    </tag> 

</taglib> 
+0

versión 2.0 que se encuentra en los documentos de Oracle no parece funcionar. 2.1 es bueno! –

Cuestiones relacionadas