tutorial - No se detectaron restricciones gramaticales(DTD o esquema XML) para el documento
xml y xsd ejemplo (16)
Tengo este dtd: http://fast-code.sourceforge.net/template.dtd Pero cuando incluyo en un xml recibo la advertencia: No se detectaron restricciones gramaticales (DTD o esquema XML) para el documento. El xml es:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE templates PUBLIC "//UNKNOWN/" "http://fast-code.sourceforge.net/template.dtd">
<templates>
<template type="INSTANCE_OF_CLASS">
<description>Used to Create instance of class</description>
<variation>asasa</variation>
<variation-field>asasa</variation-field>
<class-pattern>asasa</class-pattern>
<getter-setter>setter</getter-setter>
<allowed-file-extensions>java</allowed-file-extensions>
<number-required-classes>1</number-required-classes>
<allow-multiple-variation>false</allow-multiple-variation>
<template-body>
<![CDATA[
// Creating new instance of ${class_name}
final ${class_name} ${instance} = new ${class_name}();
#foreach ($field in ${fields})
${instance}.${field.setter}(${field.value});
#end
]]>
</template-body>
</template>
</templates>
EDITAR : Cambié el xml, estoy recibiendo este error ahora:
El contenido del tipo de elemento "plantilla" debe coincidir "(descripción, variación?, Campo-variación?, Permitir-variación-múltiple?, Patrón-de-clase ?, ¿acomodador?, Extensiones de archivo-permitido?, Número-requerido- clases?, plantilla-cuerpo) ".
- copie todo su código en el bloc de notas.
- Guarde temporalmente el archivo con cualquier nombre [al guardar el archivo utilice "codificación" = UTF-8 (o superior pero UTF)].
- cierra el archivo.
- ábrelo de nuevo.
- copia y vuelve a pegarlo en tu código.
el error debe desaparecer
¿Has intentado agregar un esquema al catálogo xml?
en eclipse para evitar las "restricciones gramaticales no (dtd o esquema xml) detectadas para el documento". utilizo para agregar un archivo de esquema xsd al catálogo xml en
"Ventana / preferences / xml / xml catalog / User specified entries".
Haga clic en el botón "Agregar" a la derecha.
Ejemplo:
<?xml version="1.0" encoding="UTF-8"?>
<HolidayRequest xmlns="http://mycompany.com/hr/schemas">
<Holiday>
<StartDate>2006-07-03</StartDate>
<EndDate>2006-07-07</EndDate>
</Holiday>
<Employee>
<Number>42</Number>
<FirstName>Arjen</FirstName>
<LastName>Poutsma</LastName>
</Employee>
</HolidayRequest>
De este xml he generado y guardado un xsd en: /home/my_user/xsd/my_xsd.xsd
Como ubicación: /home/my_user/xsd/my_xsd.xsd
Como tipo de clave: nombre del espacio de nombres
Como clave: http://mycompany.com/hr/schemas
Cierre y vuelva a abrir el archivo xml y realice algunos cambios para violar el esquema, se le debe notificar
Agregar etiqueta DOCTYPE ...
En este caso:
<!DOCTYPE xml>
Agregar después:
<?xml version="1.0" encoding="UTF-8"?>
Asi que:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xml>
Aquí está la solución de trabajo para este problema:
Paso 1: haz clic con el botón derecho en el proyecto y ve a las propiedades
Paso 2: ir a ''bibliotecas'' y eliminar la ''biblioteca del sistema JRE'' del proyecto
Paso 3: haga clic en ''Agregar biblioteca'' -> ''Biblioteca del sistema JRE'' -> seleccione ''JRE del espacio de trabajo predeterminado''
Paso 3: vaya a ''Ordenar y Exportar'' y marque la ''biblioteca del sistema JRE'' recién agregada
Paso 4: actualizar y limpiar el proyecto
Eureka! Esta funcionando :)
En mi caso, he resuelto esta molesta advertencia simplemente agregando <!DOCTYPE xml>
después de la etiqueta <?xml ... >
.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xml>
Esto funcionó para mí en Eclipse 3.7.1: vaya a la ventana de Preferencias, luego XML -> Archivos XML -> Validación. Luego, en la sección Validar archivos del panel de preferencias a la derecha, seleccione Ignorar en el cuadro desplegable para la preferencia "No se especificó la gramática". Es posible que deba cerrar el archivo y luego volverlo a abrir para que la advertencia desaparezca.
(Sé que esta pregunta es antigua, pero fue la primera que encontré cuando busqué la advertencia, así que estoy publicando la respuesta aquí para otros buscadores).
Esto puede deberse a desactivar la validación en eclipse.
Lo que encontré como la solución fue algo muy simple que creo que deberías probar antes de jugar con las preferencias. En mi caso, tuve este problema en un archivo de cadenas que tenía como etiqueta base "recursos" ... todo lo que hice fue eliminar la etiqueta de arriba y abajo, limpiar el proyecto, guardar el archivo y volver a insertar la etiqueta. El problema ha desaparecido y nunca me dio ninguna advertencia. Puede sonar simple para ser cierto, pero bueno, a veces son las cosas más simples las que resuelven los problemas. Aclamaciones
No puedo decir por qué recibes la advertencia "Sin restricciones gramaticales ...", pero puedo provocarla en Eclipse al eliminar por completo la declaración DOCTYPE. Cuando devuelvo la declaración y la vuelvo a validar, aparece este mensaje de error:
El contenido del tipo de elemento "plantilla" debe coincidir "(descripción +, variación?, Campo-variación?, Permitir-variación-múltiple?, Patrón-de-clase ?, ¿acomodador?, Extensiones-de-archivos-permitidas ?, plantilla-cuerpo +) .
Y eso es correcto, creo (el elemento "number-required-classes" no está permitido).
Para mí fue un problema con la codificación de caracteres y el modo de archivo Unix ejecutando eclipse en Windows:
Simplemente marcó el código completo, lo cortó y lo pegó (en resumen: CtrlA-CtrlX-CtrlV ) y todo estuvo bien - no más "No hay restricciones gramaticales ..." advertencias
Resolvió este problema en Eclipse 3.5.2. Dos diseños completamente idénticos de los cuales uno tenía la advertencia. Cerré todas las pestañas y cuando volví a abrir la advertencia había desaparecido.
Sé que esto es viejo, pero estoy pasando por el mismo problema y encontré la solución en la documentación de primavera, la siguiente configuración xml me ha solucionado el problema.
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
http://www.springframework.org/schema/tx
<!-- THIS IS THE LINE THAT SOLVE MY PROBLEM -->
http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd">
antes de poner la línea superior como sugerida en este tema del foro, tengo el mismo mensaje de advertencia, y colocando esto ...
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xml>
y me da el siguiente mensaje de advertencia ...
The content of element type "template" must match "
(description,variation?,variation-field?,allow- multiple-variation?,class-
pattern?,getter-setter?,allowed-file-extensions?,number-required-
classes?,template-body)".
así que intente utilizar las líneas sugeridas de mi configuración xml.
Una nueva forma limpia podría ser escribir tu xml de la siguiente manera:
<?xml version=''1.0'' encoding=''UTF-8''?>
<!DOCTYPE rootElement>
<rootElement>
....
</rootElement>
Lo anterior funciona en Eclipse Juno +
Usé una ruta relativa en xsi: noNamespaceSchemaLocation para proporcionar el archivo xsd local (porque no pude usar un espacio de nombres en el xml de la instancia).
<?xml version="1.0" encoding="UTF-8"?>
<root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="../project/schema.xsd">
</root>
La validación funciona y la advertencia es fija (no ignorada).
La verdadera solución:
agregue <!DOCTYPE something>
al comienzo de cada XML problemático,
después de la etiqueta xml <?xml version="1.0" encoding="utf-8"?>
puedes escribir cualquier cosa por doctype, pero básicamente se supone que es manifiesto, actividad, etc. por lo que entiendo
Responder:
Comentarios sobre cada pieza de su DTD a continuación. Consulte las especificaciones oficiales para obtener más información.
<!
DOCTYPE ----------------------------------------- correct
templates --------------------------------------- correct Name matches root element.
PUBLIC ------------------------------------------ correct Accessing external subset via URL.
"//UNKNOWN/" ------------------------------------ invalid? Seems useless, wrong, out-of-place.
Safely replaceable by DTD URL in next line.
"http://fast-code.sourceforge.net/template.dtd" - invalid URL is currently broken.
>
Explicación simple:
Una DTD extremadamente básica se verá como la segunda línea aquí:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE nameOfYourRootElement>
<nameOfYourRootElement>
</nameOfYourRootElement>
Explicación detallada:
Las DTD sirven para establecer formatos de datos acordados y validar la recepción de dichos datos. Definen la estructura de un documento XML, que incluye:
- una lista de elementos legales
- caracteres especiales
- cadenas de caracteres
- y mucho más
P.ej
<!DOCTYPE nameOfYourRootElement
[
<!ELEMENT nameOfYourRootElement (nameOfChildElement1,nameOfChildElement2)>
<!ELEMENT nameOfChildElement1 (#PCDATA)>
<!ELEMENT nameOfChildElement2 (#PCDATA)>
<!ENTITY nbsp " ">
<!ENTITY author "Your Author Name">
]>
Significado de las líneas anteriores ...
Línea 1) Elemento de raíz definido como "nameOfYourRootElement"
Línea 2) Inicio de definiciones de elementos
Línea 3) Niños del elemento de raíz definidos como "nombre de tu elemento raíz1" y "nombre de tu elemento raíz2"
Línea 4) Elemento hijo, que se define como tipo de datos #PCDATA
Línea 5) Elemento hijo, que se define como tipo de datos #PCDATA
Línea 6) Expanda instancias de
a  
cuando el documento es analizado por XML parser
Línea 7) Ampliar instancias de &author;
a Your Author Name
cuando el analizador XML analiza el documento
Línea 8) Fin de las definiciones