/** Enregistre un changement dans le DOM. */
 private void enregistrerChangement() {
   String valeur = getValeur();
   if ((valeur == null || "".equals(valeur)) && noeud == null) {
     // arrive si enregistrerChangement est appelé 2 fois lors d'un effacement
     // il n'y a rien à changer
     return;
   }
   if (valeur == null) valeur = "";
   doc.setModif(true);
   MyCompoundEdit cedit = null;
   if (noeud == null && !"".equals(valeur)) {
     cedit = new MyCompoundEdit();
     creerNoeud(cedit);
   } else if (noeud != null && "".equals(valeur) && affParent != null) {
     effacerNoeud(false, null);
     return;
   }
   if (!attribut) {
     final Element el = (Element) noeud;
     final Node firstChild = el.getFirstChild();
     if (firstChild == null) {
       final FormUndoableEdit fedit = new FormUndoableEdit(this, "", valeur);
       if (cedit != null) cedit.addEdit(fedit);
       else doc.textPane.addEdit(fedit);
       final Node textnode = el.getOwnerDocument().createTextNode(valeur);
       el.appendChild(textnode);
     } else if (firstChild.getNodeType() == Node.TEXT_NODE) {
       final FormUndoableEdit fedit =
           new FormUndoableEdit(this, firstChild.getNodeValue(), valeur);
       if (cedit != null) cedit.addEdit(fedit);
       else doc.textPane.addEdit(fedit);
       firstChild.setNodeValue(valeur);
     } else
       LOG.error(
           "AffichageFormulaire.enregistrerChangement : pas de noeud texte pour enregistrer le champ");
   } else {
     final FormUndoableEdit fedit = new FormUndoableEdit(this, noeud.getNodeValue(), valeur);
     if (cedit != null) cedit.addEdit(fedit);
     else doc.textPane.addEdit(fedit);
     final Element elparent = (Element) affParent.getNoeud();
     final String nom = cfg.nomAttribut(refNoeud);
     final String espace = cfg.espaceAttribut(refNoeud);
     elparent.setAttributeNS(espace, nom, valeur);
   }
   if (cedit != null) {
     cedit.end();
     doc.textPane.addEdit(cedit);
   }
   if ("".equals(valeur)) setValidite(true);
   else {
     if (attribut) setValidite(cfg.attributValide(refNoeud, valeur));
     else setValidite(cfg.valeurElementValide(refNoeud, valeur));
   }
 }