# XHTML Mobile Profile

XHTML Mobile Profile (XHTML MP) è un linguaggio di markup, progettato specificatamente per telefoni cellulari e altri apparecchi con risorse limitate.
È un tipo di XHTML definito dalla Open Mobile Alliance. XHTML-MP è derivato da XHTML 1.1 Basic Profile aggiungendo XHTML Modules (e altri moduli nelle versioni più recenti, anche se questo non assicura una completa compatibilità con i browser XHTML-MP).
Lo standard raccomandato è l'1.1 DTD, concluso ad ottobre 2006. I lavori sulla versione 1.2 DTD continuano ma una data di pubblicazione non è ancora nota.

## DOCTYPE

Per essere validato XHTML Mobile 1.1, un documento deve contenere la seguente Dichiarazione di Tipo di Documento, o DOCTYPE:
    <!DOCTYPE html PUBLIC "-//WAPFORUM//DTD XHTML Mobile 1.1//EN" "http://www.openmobilealliance.org/tech/DTD/xhtml-mobile11.dtd">

## Tipi MIME

Il tipo MIME per XHTML Mobile Profile è "application/vnd.wap.xhtml+xml". Gli user agent compatibili dovrebbero accettare anche "application/xhtml+xml" and "text/html".

## Versioni

La versione 1.2 aggiunge il support per gli oggetti e le form. La versione 1.1 ha aggiunto il supporto per lo scripting ECMAScript Mobile Profile.
La versione 1.0 ha esteso XHTML 1.1 Basic Profile con alcune rappresentazioni di elementi e un supporto di scripting di base.

## Moduli Supportati

I moduli inclusi in XHTML-MP 1.2 sono:
* Structure
* Texts
* Hypertext
* List
* Forms
* Basic Tables
* Image
* Object
* Metainformation
* Scripting
* Style Sheet
* Style Attribute
* Link
* Base
XHTML-MP 1.2 supporta anche parzialmente:
* Presentation
* Intrinsic Events
* Legacy
Infine la versione 1.2 include uno specifico modulo Open Mobile Alliance (OMA), il "Text Input Modes", per usare i diversi tipi di input-mode permessi sui cellulari.

## Insidie durante lo sviluppo

Molti problemi sorgono quando il contenuto scritto in XHTML è visualizzato su apparecchi diversi. Alcuni rispetteranno i colori specificati nel CSS mentre alcuni non lo faranno, altri visualizzeranno le tabelle e altri no, solo per citare alcuni esempi. Sviluppare un'applicazione che si adatti ai device, significa scrivere contenuti diversi per apparecchi diversi, in base alle loro capacità. Questo può portare ad un'enorme complessità dato il numero elevato di apparecchi diversi presenti sul mercato con diverse caratteristiche hardware (dimensione dello schermo, capacità sull'uso dei colori, tasti, memoria e velocità) e browser. L'aggiornamento software dei browser per cellulari è in ogni caso molto più difficile di quello dei browser per PC, con il risultato che il software installato rimane in uso fino a quando il telefono non viene dismesso.
Alcune iniziative presentano una soluzione a questo problema. La maggior parte fornisce un linguaggio proprietario per scrivere contenuti WAP che verranno visualizzati in maniera diversa (in XHTML-MP, WML, CHTML, etc) a seconda dell'apparecchio che ne ha fatto richiesta. Un'altra libera iniziativa è WURFL che usa una configurazione XML gerarchica in grado di mappare centinaia di caratteristiche dei vari device, e un layer di astrazione (WALL: Wireless Abstraction Layer) che permette di scrivere tag che sono convertiti automaticamente nel tipo di mark-up supportato dal device.