>Mi aggiunge le info prelevate dal form dopo </category>, quando invece dovrebbe porli al suo interno.
>var root = oggetto.documentElement.appendChild(
root normalmente è il primo (ed unico) nodo figlio dell'XML (infatti il tuo XML risultante NON è valido).
Nel tuo caso la root è "gallery", ottenuto da oggetto.documentElement.
oggetto.createElement("images")); => crea un elemento di nome "images".
oggetto.documentElement.appendChild(...) => appende(aggiunge in fondo) alla lista di child della root (xml.documentElement) il nodo passato.
Per prima cosa dai dei nomi significativi alle istanze altrimenti è un casino.
Non ho visto la documentazione ma penso appendChild() mi trestituisca l'elemento appena aggiunto, il tuo "images" che invece viene chiamato root.
Ho fatto un pò di fatica a capire il codice anche per questo.
Ti hanno obbligato ad usare solo 3 lettere (dsc = desc = descrizione, dat = data) ?
Detto questo,
e dato per scontato che esiste un solo nodo category (e quindi prendo il primo nodo FIGLIO di root)
e che esista il metodo firstChild(),
credo che un modo corretto per aggiungere un nuovo elemento "images" possa essere il seguente:
var nodoImmagine = xmlDoc.createElement("images"); // oggetto non mi piace come nome
xmlDoc.documentElement.firstChild().appendChild(nodoImmagine); // <-- ti basta correggere questo
var nodoFile = xmlDoc.createElement("img");
nodoFile.text = ...
nodoImmagine.appendChild( nodoFile );
ecc...
Non ho modo di provare il codice ASP e quindi spero di aver scritto una roba corretta.
In pratica ti manca di aggiungere firstChild() o qualcosa di equivalente (Childs[0] o simile).
Ciao
Alessandro