Grazie ho visto
e' un po complicato comunque ...
Ho creato una libreria che gestisce le revisioni di un testo sfruttando come base dati un nodo xml
fatto cosi
ho fatto tutte le funzioni che creano un nodo revisione e lo aggiornano e restituiscono la revisioneCodice PHP:<main>
<revnode last="2">
<text>testo dell'ultima revisione</text>
<rev n=0>stringa di diff</rev>
<rev n=1>stringa di diff</rev>
<rev n=2>stringa di diff</rev>
</revnode>
che mi interessa e potrei utilizzare tranquillamente quelle.
pero ho esteso la libreria con queste funzioni ometto il codice se no diventa un mattone
in questo modo mi risulta piu facile e immediato da utilizzare come prova ho fattoCodice PHP:class RevsionXmlNode extends SimpleXMLElement
{
public function is_RevNode() { }
public function addChildRev($text,$attrlist = NULL) { }
public function addRevision($text , $attrlist = NULL) {}
public function getRevision($nrev_hi = -1,$nrev_low = -1) {}
public function getRevDiff($nrev_hi = -1,$nrev_low = -1) {}
public function RevRestore($nrev, $attrlist = NULL) {}
public function RevNum() { }
}
questo
Codice PHP:
$xml = simplexml_load_string('<base></base>','RevisionXmlNode');
$revnode = $xml->addChildRev("Ecco la mia nuova classe");
if ($xml->revnode->is_revnode()) {echo "E' un nodo di revisioni \n";} else {echo "non e' un nodo di revisioni\n";}
if ($revnode->is_revnode()) {echo "E' un nodo di revisioni \n";} else {echo "non e' un nodo di revisioni\n";}
echo $revnode->getRevision();
$lastrev = $revnode->addRevision("una seconda versione");
echo "aggiunta la $lastrev revisione con stringa\n";
echo $revnode->getRevision(),"\n";
$lastrev = $revnode->addRevision("ciao\ncome stai ?\nio bene e tu ?\n");
echo "aggiunta la $lastrev revisione con stringa\n";
echo $revnode->getRevision(),"\n";
$lastrev = $revnode->addRevision("ciao\ncome stai ?\n malissimo");
echo "aggiunta la $lastrev revisione con stringa\n";
echo $revnode->getRevision(),"\n";
echo "torno alla revision 2\n";
echo $revnode->RevRestore(2),"\n";
for ($i = 0; $i < $revnode->RevNum(); $i ++) {
echo "\n\n-----------rev $i -----------\n";
echo $revnode->getRevision($i);
}
tieni conto che cosi facendo oltre a gestire i nodi che mi interessano posso accedere all'albero
xml con tutte le possibila' che offre simpleXML
come ti sembra ?
Andrea

Rispondi quotando