Muchas gracias pacmanaman por tu respuesta, no la implemente tal como me la pusiste en el ejemplo, pero en base a ello pude generar el script que me da por resultado el XML que necesito.
Mi aporte con la solución....
Código PHP:
<?php require_once('../Connections/conexion.php'); ?>
<?php
$nivel_max = 3;
$campos = "";
for($i=0;$i<$nivel_max;$i++){
$campos.= "t$i.IdCategoria AS IdCatNivel$i,t$i.categoria AS CatNivel$i,t$i.IdCatPadre AS IdPadreNivel$i";
if($i!=$nivel_max-1){
$campos.= ",";
}
}
$sql = "SELECT $campos ";
$sql .= "FROM Categorias AS t0 ";
for($i=1;$i<$nivel_max;$i++){
$sql .= "LEFT JOIN Categorias AS t$i ON t$i.IdCatPadre = t".($i-1).".IdCategoria ";
}
$sql .= "WHERE t0.IdCatPadre = '0'";
//echo $sql;
mysql_select_db($database_conexion, $conexion);
$query_rsCategorias = $sql;
$rsCategorias = mysql_query($query_rsCategorias, $conexion) or die(mysql_error());
$row_rsCategorias = mysql_fetch_assoc($rsCategorias);
$totalRows_rsCategorias = mysql_num_rows($rsCategorias);
// CREACION DEL DOCUMENTO XML
$dom = new DOMDocument('1.0','UTF-8');
// ESCRITURA DEL NODO RAIZ CON SUS ATRIBUTOS
$nodo0 = $dom->appendChild($dom->createElement('item'));
$atributo_id = $dom->createAttribute('id');
$texto_id = $dom->createTextNode('0');
$atributo_id->appendChild($texto_id);
$atributo_label = $dom->createAttribute('label');
$texto_label = $dom->createTextNode('La ciruela');
$atributo_label->appendChild($texto_label);
$nodo0->appendChild($atributo_id);
$nodo0->appendChild($atributo_label);
// ESCRITURA DE LOS NODOS SECUNDARIOS
if($totalRows_rsCategorias > 0){
do{
for($i=0;$i<$nivel_max;$i++){
$item = $row_rsCategorias['CatNivel'.$i];
if($item != ""){
if(!isset(${'item_nivel_'.$i})) ${'item_nivel_'.$i} = "";
if(${'item_nivel_'.$i} != $item){
$id = $row_rsCategorias['IdCatNivel'.$i];
${'item_nivel_'.$i} = $item;
${'nodo'.($i+1)} = ${'nodo'.$i}->appendChild($dom->createElement('item'));
$atributo_id = $dom->createAttribute('id');
$texto_id = $dom->createTextNode($id);
$atributo_id->appendChild($texto_id);
$atributo_label = $dom->createAttribute('label');
$texto_label = $dom->createTextNode(utf8_encode(${'item_nivel_'.$i}));
$atributo_label->appendChild($texto_label);
${'nodo'.($i+1)}->appendChild($atributo_id);
${'nodo'.($i+1)}->appendChild($atributo_label);
}else{
}
}
}
}while($row_rsCategorias = mysql_fetch_assoc($rsCategorias));
}
$dom->formatOutput = true;
header("Content-type: text/xml");
echo $dom->saveXML();
?>