Join MDN and developers like you at Mozilla's View Source conference, 12-14 September in Berlin, Germany. Learn more at https://viewsourceconf.org

XML en Mozilla

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.

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.

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 ("User Interface", Interfaz de usuario) 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 tipostandalone (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.

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  

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

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 &auml; 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:

  1. -//W3C//DTD XHTML 1.0 Transitional//EN
  2. -//W3C//DTD XHTML 1.1//EN
  3. -//W3C//DTD XHTML 1.0 Strict//EN
  4. -//W3C//DTD XHTML 1.0 Frameset//EN
  5. -//W3C//DTD XHTML Basic 1.0//EN
  6. -//W3C//DTD XHTML 1.1 plus MathML 2.0//EN
  7. -//W3C//DTD XHTML 1.1 plus MathML 2.0 plus SVG 1.1//EN
  8. -//W3C//DTD SVG 20001102//EN
  9. -//WAPFORUM//DTD XHTML Mobile 1.0//EN

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);

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.)

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

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.

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.

¿Cómo puedo ayudar?

Esto necesita una revisión de la traducción

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.

Etiquetas y colaboradores del documento

 Colaboradores en esta página: fscholz, Mgjbot, Superruzafa, Nukeador, Fedora-core, Jorolo
 Última actualización por: fscholz,