jquery xhtml xsd dtd

get xml jquery



Extendiendo XHTML (1)

Estoy jugando con la escritura de un complemento jQuery que usa un atributo para definir el comportamiento de validación de formularios (sí, soy consciente de que ya hay un complemento de validación, esto es tanto un ejercicio de aprendizaje como algo que voy a usar). Idealmente, me gustaría tener algo como esto:

Ejemplo 1 - entrada:

<input id="name" type="text" v:onvalidate="return this.value.length > 0;" />

Ejemplo 2 - envoltorio:

<div v:onvalidate="return $(this).find(''[value]'').length > 0;"> <input id="field1" type="text" /> <input id="field2" type="text" /> <input id="field3" type="text" /> </div>

Ejemplo 3 - predefinido:

<input id="name" type="text" v:validation="not empty" />

El objetivo aquí es permitir que mi código jQuery determine qué elementos deben validarse (esto ya está hecho) y aún así tener el marcado XHTML válido, que es con lo que estoy teniendo un problema. Estoy bastante seguro de que esto requerirá una combinación de DTD y XML Schema, pero realmente no estoy muy seguro de cómo ejecutarlo exactamente.

Basado en este artículo , he creado el siguiente DTD:

<!ENTITY % XHTML1-formvalidation1 PUBLIC "-//W3C//DTD XHTML 1.1 +FormValidation 1.0//EN" "http://new.dandoes.net/DTD/FormValidation1.dtd" > %XHTML1-formvalidation1; <!ENTITY % Inlspecial.extra "%div.qname; " > <!ENTITY % xhmtl-model.mod SYSTEM "formvalidation-model-1.mod" > <!ENTITY % xhtml11.dtd PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd" > %xhtml11.dtd;

Y aquí está "formvalidation-model-1":

<!ATTLIST %div.qname; %onvalidation CDATA #IMPLIED %XHTML1-formvalidation1.xmlns.extra.attrib; >

Nunca he hecho DTD antes, así que ni siquiera estoy realmente seguro de lo que estoy haciendo. Cuando ejecuto mi página a través del validador W3 XHTML, recibo más de 80 errores porque está obteniendo definiciones duplicadas de todos los elementos XHTML. ¿Estoy al menos en el camino correcto? ¿Alguna sugerencia?

EDITAR: eliminé esta sección de mi DTD personalizada, porque resultó que en realidad era autorreferencia, y el código del que obtuve la plantilla fue realmente para combinar dos DTD en uno, no para agregar elementos específicos a uno:

<!ENTITY % XHTML1-formvalidation1 PUBLIC "-//W3C//DTD XHTML 1.1 +FormValidation 1.0//EN" "http://new.dandoes.net/DTD/FormValidation1.dtd" > %XHTML1-formvalidation1;

También eliminé esto porque no valía y no parecía estar haciendo nada.

<!ENTITY % Inlspecial.extra "%div.qname; " >

Además, decidí que dado que solo estoy agregando un puñado de elementos adicionales, el modelo de archivos separados recomendado por W3 no parece tan útil, así que puse todo en el archivo dtd, cuyo contenido ahora es este :

<!ATTLIST div onvalidate CDATA #IMPLIED> <!ENTITY % xhtml11.dtd PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd" > %xhtml11.dtd;

Así que ahora, no estoy recibiendo ningún error de validación relacionado con DTD, pero el atributo onvalidate aún no es válido.

Actualización: he abandonado el DTD y he agregado un esquema: http://schema.dandoes.net/FormValidation/1.0.xsd

El uso de v: onvalidate parece validar en Visual Studio, pero el servicio W3C aún no le gusta.

Aquí hay una página donde lo estoy usando para que pueda ver la fuente:

http://new.dandoes.net/auth

Y aquí está el enlace al resultado de la validación w3c:

http://validator.w3.org/check?uri=http://new.dandoes.net/auth&charset=(detect+automatically)&doctype=Inline&group=0

¿Esto es lo más cerca que puedo llegar con esto, o todavía estoy haciendo algo mal?


Si desea que el resultado sea XHTML válido, creo que deberá usar espacios de nombres XML en lugar de una DTD personalizada. La DTD no solo define el lenguaje (y por lo tanto, una DTD personalizada no es "realmente" XHTML), sino que arrojará a todos los navegadores que lo lean en modo peculiar , incluso si no se ahogan en el archivo.

El uso de un espacio de nombres, por otro lado, producirá XHTML perfectamente válido (aunque no todos los validadores son conscientes del espacio de nombres y pueden no validarlo correctamente) y permite que los navegadores funcionen en el modo de estándares (cerca de).

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="http://example.com/ns/validation" xml:lang="en"> <head><title>Validation Example</title></head> <body> <input id="name1" type="text" v:onvalidate="return this.value.length &gt; 0;"/> <input id="name2" type="text" v:validation="not empty"/> </body> </html>