Non do una soluzione: faccio solo delle considerazioni generali.
Innanzitutto occorre domandarsi che tipo di testo sia, quali vantaggi si possono trarre dalla codifica di un brano simile in linguaggio di marcatura e scegliere di conseguenza i marcatori adatti.
Sarebbe stupido soffermarsi sulla sola suddivisione titolo-paragrafi-grassetto-italico e via dicendo: c'è già un linguaggio di markup adatto a questa descrizione, ed è appunto il generico (X)HTML.
Quali sono dunque le informazioni chiave? La consegna suggerisce i nomi propri: effettivamente sarebbe utile al fine di pescare statistiche quali numero di personaggi, nomi, RELAZIONE tra gli stessi (sarebbe l'idea più originale, credo).
L'ideale, a parer mio, sarebbe realizzare una DTD integrativa per XHTML 1.1: si possono sfruttare tutti i tag generici del noto linguaggio (noto e appropriato), integrando solo con ciò che ci interessa. Tuttavia il tuo docente non so quanto possa arrivarci. 
Attributi di stile per il testo dentro il markup?! Ma ancora qua stiamo! I CSS si possono applicare anche a documenti XML generici, perchè non sfruttarli? Vabbè, il tuo docente forse non ci arriva, fin qua. 
Cosa fare, dunque? Io imbastirei in questo modo:
codice:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE antologia SYSTEM "massa.dtd">
<antologia xmlns="http://massa.it/antologia/">
<informazioni_opera>
<titolo>I Malavoglia</titolo>
<autore href="gverga.it/biografia">Giovanni Verga</autore>
<anno>1881</anno>
</informazioni_opera>
<brano>
<paragrafo>
Un tempo i <personaggio tipo="famiglia">Malavoglia</personaggio>
erano stati numerosi come i
sassi della strada vecchia di <luogo tipo="paese">Trezza</luogo>;
ce n'erano persino ad <luogo tipo="paese">Ognina</luogo>, e ad
<luogo tipo="paese">Aci Castello</luogo>, tutti buona e brava
gente di mare, proprio all'opposto di quel che
sembrava dal nomignolo, come dev'essere.
</paragrafo>
<illustrazione tipo="foto" src="trezza.jpg">
Foto d'epoca ritraente il vecchio paese di Aci Trezza.
</illustrazione>
<paragrafo>
E la famigliuola di
<personaggio id="padron_ntoni"
tipo="persona"
ruolo="padre"
relazione="bastiano">padron 'Ntoni
</personaggio>
era realmente disposta come le dita della mano. Prima veniva lui,
il dito grosso, che comandava le feste e le quarant'ore; poi suo figlio
<personaggio id="bastiano"
tipo="persona"
ruolo="figlio"
relazione="padron_ntoni">Bastiano
</personaggio>,
Bastianazzo, perché era grande e grosso quanto il San...
</paragrafo>
</brano>
</antologia>
Gli id non li attribuirei a TUTTI gli elementi, ma solo, ad esempio, ai personaggi, in modo tale da poter fare riferimento nei rapporti di relazione. Intanto farei così. Voi che ne dite?
P.S. Grazie per lo spunto: è un bellissimo e utilissimo esercizio che fa benissimo anche a noi. Non si parla spesso di queste cose qua sul forum, purtroppo.