XML en Mozilla
De MDC
Mozilla posee un buen soporte para XML. Varias recomendaciones y borradores del consorcio World Wide Web (W3C) para la familia de especificaciones XML están soportadas, al igual que otras tecnologías relacionadas.
Tabla de contenidos |
[editar] Recomendaciones W3C para el núcleo de XML soportadas
El soporte para el núcleo de XML incluye análisis de XML sin validación (utilizando el analizador Expat), visualización de XML con CSS, manipulación de documentos XML con scripts vía DOM, asociación de hojas de estilo con documentos XML y espacios de nombres en XML. El soporte del núcleo es muy bueno y apenas tiene fallos.
[editar] DTDs y otras entidades externas
Mozilla no carga entidades externas desde la web sino que las carga internamente si su identificador del sistema utiliza el protocolo chrome. Esta característica es usada principalmente para traducir Mozilla a otros idiomas (las cadenas de texto del UI están almacenadas en ficheros DTD externos).
Otra opción son las entidades cuyo identificador del sistema sea un camino relativo y la declaración XML establezca que el documento no sea del tipo standalone (es decir, que tenga un DTD asociado), que es el tipo predeterminado. En ese caso, Mozilla intentará buscar dichas entidades en el directorio <bin>/res/dtd/
Adicionalmente, Mozilla puede hacer una excepción con los documentos XHTML (ver más abajo).
Mozilla leerá los subconjuntos DTD internos y en circunstancias específicas los externos como se ha explicado anteriormente; y usará esta información para reconocer los atributos de tipo ID, los valores predeterminados de los atributos y las entidades generales.
[editar] Otras notas
Gran parte del Modelo de Objetos de Documento (DOM, Recomendaciones y borradores del W3C) se aplica a XML. Al igual que las hojas de estilos en cascada (CSS, Recomendaciones y borradores del W3C), el lenguaje de estilo puede ser usado para aplicar estilos a los documentos XML.
Puedes encontrar el código para la mayor parte del núcleo XML en los siguientes directorios del repositorio CVS de Mozilla: content/xml/, parser/expat/ y parser/htmlparser/.
El grupo de noticias para hablar sobre XML en Mozilla varía según la naturaleza de la pregunta. Por ejemplo, las preguntas relativas al DOM deberían de ser habladas en el grupo de noticias mozilla.dev.tech.dom mientras que los problemas de estilo deberían de ser discutidos en mozilla.dev.tech.css, etcétera... El grupo de noticias principal para XML es mozilla.dev.tech.xml.
| Especificación o tecnología | Estado y/o documentación adicional |
| XML | Recomendación del W3C |
| Espacios de nombres en XML | Recomendación del W3C |
| Asociando hojas de estilos con documentos XML | Recomendación del W3C |
| Aplicando estilos a documentos XML con CSS | |
| Manipulando documentos XML con scripts vía DOM |
[editar] Otras recomendaciones W3C para XML soportadas
| Especificación o tecnología | Documentación |
| XHTML | Recomendación W3C |
XML Base (sólo para enlaces, no usado por las pseudoclases de CSS :visited, etc...)
| Recomendación W3C |
| XLink (sólo XLinks simples) | Recomendación W3C |
| FIXptr | Propuesta W3C |
| XPointer Framework | Recomendación W3C |
Esquema element() de XPointer
| Recomendación W3C |
Esquema xmlns() de XPointer
| Recomendación W3C |
Esquema fixptr() de XPointer
| Este esquema es sólo una capa para FIXptr |
Esquema xpath1() de XPointer
| Borrador de Internet |
document.load(), document.async
| Parte del módulo Load & Save del DOM nivel 3, un borrador del W3C |
[editar] XHTML
El soporte existente para XHTML es razonablemente amplio y la mayoría de las cosas deberían de funcionar. El trato que se le da a los documentos XHTML difiere según el tipo MIME (o la extensión del fichero si éste es cargado desde disco). Si un fichero es interpretado como HTML no se comprobará que esté bien formado. También podrás advertir que no todas las características de XHTML son soportadas cuando se trabaja con HTML.
| Tipo MIME | Extensión | Interpretación |
| text/xml application/xml application/xhtml+xml | xml xht xhtml | XML |
| text/html | html htm | HTML |
El documento en su totalidad no necesita ser XHTML. Puedes usar elementos propios de XHTML dentro de un document XML cualquiera usando el espacio de nombres de XHTML. Véase la sección Testing and QA para ver algunos ejemplos. El espacio de nombres correcto de XHTML es http://www.w3.org/1999/xhtml.
Por favor, date cuenta de que las entidades XHTML, como ä funcionarán sólo en documentos que cumplan el estándar XHTML y que tengan un identificador público formal de XHTML (en otras palabras, una sección DOCTYPE con un identificador PUBLIC). Las entidades de XHTML no funcionarán en cualquier documento XML, ni siquiera empleando el espacio de nombres de XHTML. Los identificadores públicos reconocidos son:
- -//W3C//DTD XHTML 1.0 Transitional//EN
- -//W3C//DTD XHTML 1.1//EN
- -//W3C//DTD XHTML 1.0 Strict//EN
- -//W3C//DTD XHTML 1.0 Frameset//EN
- -//W3C//DTD XHTML Basic 1.0//EN
- -//W3C//DTD XHTML 1.1 plus MathML 2.0//EN
- -//W3C//DTD XHTML 1.1 plus MathML 2.0 plus SVG 1.1//EN
- -//W3C//DTD SVG 20001102//EN
- -//WAPFORUM//DTD XHTML Mobile 1.0//EN
[editar] Enlace y apuntado XML
El soporte para enlaces XML incluye XML Base (sólo utilizado cuando el ratón se superpone a o se hace clic en un enlace) y XLinks simple. Puedes convertir cualquier elemento XML en un XLink usando el espacio de nombres de XLink http://www.w3.org/1999/xlink. Puedes utilizar además los elementos enlazados del espacio de nombres de XHTML. Véase la sección Pruebas y seguro de calidad para ver algunos ejemplos.
Para apuntar a recursos en documentos XML Mozilla también soporta FIXptr, una simplificada aunque incompatible versión de XPointer. Aparte de usar FIXptr en enlaces, es posible usarlo en scripts. Véase la interfaz propietaria dom/public/idl/core/nsIDOMXMLDocument.idl. Hay un caso de estudio para enlaces FIXptr y un ejemplo de script.
Desde la versión 1.4 alpha, Mozilla también soporta el XPointer Framework, el esquema element() de XPointer, el esquema xmlns() de XPointer, el esquema fixptr() XPointer y esquema xpath1() de XPointer. El procesador para XPointer es ampliable y es fácil implementar soporte para otros esquemas (echa un vistazo al API). El esquema xpath1() fue implementado usando este mecanismo ampliable. Hay además una API propietaria de scripts para el procesador de XPointer. Existe un caso de estudio para XPointers que quizá te gustaría revisar.
Por último, hay una característica que quizá te gustaría probar (siendo especialmente útil con FIXptr) que seleccionará el enlace destino cuando lo el ratón lo sobrevuele. Desgraciadamente no hay una UI (interfaz de usuario) para activar esta característica por lo que necesitarás editar el fichero de preferencias manualmente añadiendo esta línea:
pref("layout.selectanchor", true);
[editar] Métodos Load y Save de DOM
document.load() es parte de una antigua versión del Módulo Load & Save Nivel 3. Actualmente, Mozilla sólo implementa el método load() y la propiedad async. Desde la versión 1.4 alpha, ha sido posible cargar documentos de modo síncrono (antes sólo se podían cargar de modo asíncrono). Véase el ejemplo de carga en el directorio de pruebas de XML (la carga del fichero load.html desde la página generada LXR no funcionará porque LXR convertirá el fichero test.xml a HTML y lo servirá como tal. Para probar esta funcionalidad, crea los ficheros en tu disco local o en un servidor web.)
[editar] Otras recomendaciones W3C soportadas para XML
| Especificación o tecnología | Documentación | Proyecto Mozilla |
| XSLT | Recomendación W3C | XSLT |
| XPath | Recomendación W3C | XSLT |
| XMLHttpRequest | Microsoft | Extras XML |
| DOMParser and XMLSerializer | Mozilla | Extras XML |
| SOAP | W3C Note | Servicios Web |
| XML-RPC | Software de UserLand | XML-RPC |
| RDF | Recomendaciones W3C | RDF |
| SVG | Propuesta de recomendación W3C | SVG |
| MathML | Recomendación W3C | MathML |
| P3P | Recomendación W3C | P3P |
| WSDL | Nota W3C | Servicios Web |
| XBL | Nota W3C (por Mozilla) | XBL |
| XUL | Mozilla | XPToolkit |
[editar] Hoja de ruta
Las próximas tareas deberían incluir soporte para el esquema xpointer() de XPointer (bug 32832), soporte completo de XLink (bug 61664), XInclude, Catálogos XML (bug 98413), XForms (bug 97806), analizador de validez (bug 196355), Esquemas XML, mejoras sustanciales en la visualización de los documentos XML (bug 18333), y una API de SAX (bug 315825).
Para implementar totalmente XLink se necesita algo llamado un administrador de enlaces. Véase algunos documentos de diseño preliminares.
[editar] Pruebas y seguro de calidad
Hay un montón de casos de estudio enlazados desde la página de seguro de calidad del cumplimiento de los navegadores estándares.
La mayor parte de los documentos de prueba para el núcleo de XML del servidor CVS están ubicadas en content/xml/tests. Además existen un par de ellos en línea: la demostración de libros y la de la tabla de contenidos IRS. Ambas muestran el funcionamiento de XML, asociaciones de hojas de estilo con XML, visualización de XML con CSS, espacios de nombres en XML, XHTML, XLinks simple y la manipulación de XML con scripts vía DOM.
Existe un componente XML en Bugzilla. Además está la palabra clave "xhtml" para los bugs de XHTML (los cuales se pretende sean cubiertos entre componentes).
Hay bugs abiertos para hacer pruebas NIST DOM (bug 51247) y NIST XML en Mozilla, y que actualmente no funcionan.
[editar] ¿Cómo puedo ayudar?
Si sabes programar, busca palabras clave solicitadas en bugs de XML.
No siempre lo utilizamos, así que si prefieres para evitarte el tener que hacer trabajo repetido puedes empezar trabajando con los fallos que tiene el futuro milestone, o en otro caso los que tiene uno de los milestone que va camino de ser el futuro.
Siempre puedes poner a prueba el soporte para XML. Preferiríamos conseguir tests que pudieran ser ejecutados automáticamente (esto requiere conocimientos de desarrollo web, document.load() y/o algún que otro añadido XML podría ser necesitado), pero probablemente la mayoría de los fallos que nos son notificados son encontrados por gente normal intentando hacer algo que funciona en otros navegadores y no en Mozilla.