Claudio Brotto

WordML e Revision ID

Oggi da un cliente, più o meno 12 secondi dopo aver varcato la soglia, mi è stata fatta una domanda che sul momento mi ha lasciato piuttosto perplesso.

"Perchè quando modifico il testo in un documento Word (*) il valore aggiunto non viene semplicemente appeso al termine del precedente, ma tra i due viene frapposto del contenuto ?"

Contestualizzo un minimo.

Il documento in questione è WordML, utilizzato come formato nella generazione (via XSL) di documenti Word a partire da moduli InfoPath (niente document converters, nè OpenXML, nè tanto meno word print view causa necessità di compatibilità con Forms Services).

Il contenuto testuale di origine:

<w:p wsp:rsidR="00E57442" wsp:rsidRDefault="00434E2F">
  <w:r>
    <w:t>Ciao</w:t>
  </w:r>
</w:p>

dopo una semplice modifica, si trasforma in:

<w:p wsp:rsidR="00E57442" wsp:rsidRDefault="00434E2F">
  <w:r>
    <w:t>Ciao</w:t>
  </w:r>
  <w:r wsp:rsidR="00C2519A">
    <w:t> a Tutti</w:t>
  </w:r>
</w:p>

Il che rende *un po' scomodo*, ad esempio, il find and replace di turno :-)

In altri termini, a priori mi sarei aspettato una versione due come segue:

<w:p wsp:rsidR="00E57442" wsp:rsidRDefault="00434E2F">
  <w:r>
    <w:t>Ciao a tutti</w:t>
  </w:r>
</w:p>

Il motivo di questo comportamento, almeno per me, inaspettato è spiegato nel dettaglio in questo post di Brian Jones.

Ne riassumo in due righe il significato, rimandando ogni approfondimento direttamente alla fonte.

Word memorizza dei revision identifiers (RSIDs), indipendentemente dal fatto che la funzionalità di track changes sia o meno abilitata sul documento in questione. Tali id sono numeri casuali e non contengono, per ragioni di sicurezza, alcuna indicazione che consenta di risalire all'utente che ha apportato le modifiche. Risultano utili nel caso di fork delle modifiche sui documenti, poichè eventuali merge successivi si riducono ad una indagine sulle revisioni (memorizzate come attributo nel documento stesso).

Bello. E se non lo voglio ?

Dalle opzioni del Trust Center (sia in Word 2003 che in Word 2007), Privacy Options e deselezione del check "Store random numbers to improve Combine accuracy".

Credits a Vittorio e a Mattia per la segnalazione (e per l'aver individuato in tempi brevi il workaround :-P).