Meine PHP-Anwendung muss eine Reihe von verschiedenen XML-Formate exportieren: soll ich verwenden XSLT oder native PHP?

StackOverflow https://stackoverflow.com/questions/818679

  •  03-07-2019
  •  | 
  •  

Frage

Meine PHP-Anwendung muß in der Lage sein, um zu exportieren (und Import aus) eine Reihe von unterschiedlichen Datenformaten, meist XML basiert.

Ich habe die Möglichkeit,

  • In PHP, verwenden DOM zu einem gewissen XML-basierten Format zu exportieren, die eine Ober aller Daten, die von den anderen erforderlich ist, und erstellen Sie die DOM-Ausgabe über die PHP XSL ein separates Stylesheet für jedes Ausgabeformat I unterstützen möchten, laufen Erweiterung.

oder

  • mit Nicht PHP XSL-Erweiterung, aber jedes Ausgabeformat als eine Klasse in nativen PHP implementieren, die unter Verwendung von DOM, jede solchen Klasse Umsetzung der gleiche Schnittstelle, so dass sie austauschbar sind direkt von den internen Objekten / Strukturen zu einem bestimmten XML-Format übersetzt.

Die App wird von den Universitäten verwendet wird und ist ein Werkzeug, das ‚Volk‘ Aufzeichnungen auf verschiedene Weise und Import / Export aus verschiedenen Quellen wie ihr HR-System verwaltet, usw. Ich werde den Satz von Ein- und Ausgabeformaten umsetzen selbst, aber in Zukunft gibt es die Chance, dass jemand es verwendet, wird es ändern möchten ihr eigenes Format zu unterstützen.

Ein Grund, warum ich nicht unter Berücksichtigung XSLT ist, dass, wenn jemand anderes die App in Zukunft anders als ich geht zu halten, scheint es, dass nur sehr wenige Menschen sogar XSLT kennen -. Viel mehr Menschen scheinen PHP zu wissen,

Ein weiterer Grund ist, dass die zweite wie ein effiziente und ‚programmery‘ Lösung scheint und flexibler in dem Sinne, dass ich der Ausgabe der Lage sein würde und deren Einfuhr aus Nicht-XML-Formaten wie CSV oder Spalte basierten Text genauso einfach durch die erforderlichen Teile der Klasse zu überlasten, nicht so, dass oft notwendig wäre.

Eine dritte, aber sehr klein und unbedeutend Grund ist, dass PHP XSL zu ermöglichen, muss neu zu kompilieren, während DOM standardmäßig aktiviert ist, so wäre es ein kleines bisschen mehr tragbar sein. Dies ist jedoch nicht zu viel von einem Problem, da es einfach ist, PHP neu zu konfigurieren.

Was denken Sie meine Argumentation?

War es hilfreich?

Lösung

Meine persönliche Meinung ist, dass Ihre Entscheidung auf der Tatsache stark beruhen sollte, wie Sie das XSLT-Wissen in Ihrem Zielpublikum richten würden. Wenn klar ist, dass XSLT irgendwie „terra incognita“ unter den Menschen ist, die mit dem System arbeiten (das schließt sich selbst), können Sie die XSLT-Lösung auszuschließen. Die Notwendigkeit und der Aufwand XSLT zu lernen, die Vorteile (sehr elegant - vor allem, wenn XML Transformieren von XML, keine Notwendigkeit zu Chaos mit PHP-Code, kein PHP-Kenntnisse erforderlich) zunichte machen. Sie werden von der XSLT-Lösung erhalten

Vielleicht eine Zwei-Wege-Lösung kann das Richtige sein, mit zu gehen. Sie könnten ein Adapter-System für den Import und Export zu bauen, die XSLT für die XML-Datenformate verwendet und bietet die Möglichkeit, PHP-Code für alle Datenformate zu verwenden, die nicht XML basieren. Auf diese Weise jeder Entwickler den Weg wählen kann er sich wohler mit.

interface My_DataConverter_Interface
{
    /**
          * @param string                $file
          * @return My_DataObject
          */
    function import($file);

    /**
          * @param My_DataObject $data
          * @param string                $file
          */
    function export(My_DataObject $data, $file);
}

abstract class My_DataConverter_Xslt implements My_DataConverter_Interface
{ /* ... */ }

class My_DataConverter_XmlFormat1 extends My_DataConverter_Xslt
{ /* ... */ }

class My_DataConverter_XmlFormat2 extends My_DataConverter_Xslt
{ /* ... */ }

class My_DataConverter_Csv implements My_DataConverter_Interface
{ /* ... */ }

Andere Tipps

Ich denke, Ihre Argumentation Ton ist, und es ist so, wie ich auch gehen würde.

Im Grunde, was Sie sprechen sind Brücke / Adapter / Fassadenklassen. Sie sind (imho) flexibler und einfacher als XSL-Vorlagen zu verstehen.

Der dritte Grund nicht wirklich ist, weil XSL Unterstützung nichts mehr beinhaltet als eine PHP-Erweiterung uncommenting.

Ich bin auch froh sehen Sie diese über die DOM-Erweiterungen (oder einer gleichwertigen Bibliothek) tun wollen, anstatt XML als Text schreiben, die alle entkommen Probleme einführt und so weiter werden Sie Ihren Weg zu vermeiden.

Ich persönlich denke auch, dass XSL-Vorlagen zerbrechlicher sind zu ändern (durch sie etwas kryptisch auf die überwiegende Mehrheit der Programmierer ist) so, wenn Ihr Obermenge Format jemals ändert (die, seien wir ehrlich, es wird) Sie‘ ll möglicherweise müssen alle Ihre Vorlagen ändern. Natürlich können Sie auch dies mit dem Code zu tun haben, aber Code wird wahrscheinlich einfacher zu halten.

Interessantes Problem.

Beide Lösungen funktionieren wird, ich denke, Sie wissen das aber.

Ich würde wahrscheinlich mit der codierten Lösung selbst gehen. Aber das ist wahrscheinlich mit XSLT gibt mir Kopfschmerzen zu tun.

Es ist ein auf dem Kopf zu XSLT und das ist Sie bittet, für sie von den Menschen, die Ihnen die unveränderte XML geben produziert werden ..

Wenn es immer gehen Sie sie zu produzieren dann ist es wahrscheinlich keine Rolle, und codierte Lösung wird leichter sein, die meiste Zeit aufrecht zu erhalten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top