I haven't worked much with XML Data Islands, but what you are trying to do can be accomplished with XMLHttpRequest/ActiveXObject in a cross-browser solution:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
    <title>Nice</title>
    <script type="text/javascript">
        var currentPosition;
        var numEntries;
        var entryArray;
        function loadXML(url) {
            if(typeof window.ActiveXObject != 'undefined')
            {
                xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
                xmlDoc.onreadystatechange = function () {
                    if (xmlDoc.readyState == 4) loadData();
                };
                xmlDoc.load(url);
             }
            else if (typeof XMLHttpRequest != 'undefined') {
                var xmlHttpRequest;
                xmlHttpRequest = new XMLHttpRequest();
                xmlHttpRequest.onreadystatechange = function () {
                    if (xmlHttpRequest.readyState == 4 && xmlHttpRequest.status == 200) {
                        xmlDoc = xmlHttpRequest.responseXML;
                        loadData();
                    }
                }
                xmlHttpRequest.open("GET", url, true);
                xmlHttpRequest.send(null);
            }
        }
        function loadData() {
            entryArray = xmlDoc.getElementsByTagName('CD');
            numEntries = entryArray.length;
            currentPosition = -1;
            gonext();
        }
        function gonext() {
            if(currentPosition < numEntries - 1) { currentPosition++; }
            else { currentPosition = 0; }
            replace();   
        }
        function goprevious() {
            if(currentPosition > 0) { currentPosition--; }
            else { currentPosition = numEntries - 1; }
            replace();
        }
        function replace() {
            document.getElementById('title').innerHTML = entryArray[currentPosition].getElementsByTagName('TITLE')[0].firstChild.nodeValue;
            document.getElementById('artist').innerHTML = entryArray[currentPosition].getElementsByTagName('ARTIST')[0].firstChild.nodeValue;
        }
        </script>
</head>
<body onload="loadXML('cd_catalog.xml');">
    <div>
        Titolo: <span id="title"></span><br />
        Artista: <span id="artist"></span><br />
    </div>
    <div >
        <input type="button" value="Next" onclick="gonext();" />
        <input type="button" value="Prev" onclick="goprev();" />
    </div>
</body>
</html>

Your problem might be with mixing Data Islands and XMLHttpRequest... I'm not sure if you can load the XML into the Data Islands innerHTML...