3 Stimmen

Wann sollte man xml mit xsl anstelle von HTML verwenden?

Ich mag .NET Webcontrols und Sie manipulieren Dinge, das ist allgemeiner Konsens, aber XML und XSL ist so großartig, weil Sie UI-Logik, die Plattform & Sprache-unabhängig ist, so dass eines Tages ändere ich die App zu php, Java oder was auch immer und ich kann alle die Präsentation Logik wiederverwenden. Außerdem hat XSL die Möglichkeit, vor dem Rendering .NET-Methoden (oder andere) aufzurufen.

Wann verwenden Sie XML/XSL normalerweise? Warum sollten Sie es nicht häufiger verwenden?

2voto

annakata Punkte 72408

Anstelle von HTML?

Ich verwende es ständig anstelle von asp.net-Steuerelementen, da es die Trennung von Belangen für die V und die C in 2.0 bietet, die Sie nicht in .NET 2.0 out of the box erhalten.

Offensichtlich gibt es eine Million anderer Verwendungszwecke, die nichts mit asp.net-Steuerungen zu tun haben.


Edit: eine Skizze einer Implementierung

public class xsltmanager
{
    /* constructor (singleton) which defines a file watcher for *.xsl in the path of your choice */

    //just a mutex for thread safety
    private object Mutex = new object();

    //caching XslCompiledTransforms
    private Dictionary<string, XslCompiledTransform> cTransforms = new Dictionary<string, XslCompiledTransform>();

    public XslCompiledTransform fetch(string identifier)
    {       
        if (!this.cTransforms.ContainsKey(identifier))
        {
            lock (this.Mutex)
            {
                if (!this.cTransforms.ContainsKey(identifier))
                {
                    XslCompiledTransform xslDoc = new XslCompiledTransform();
                    xslDoc.Load(/* file path based on identifier */);

                    this.cTransforms.Add(identifier, xslDoc);
                }
            }
        }
        return this.cTransforms[identifier];
    }

    /* other util xslt methods - namespace wash, doc merge, whatever */
}

public class myPage : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        //get source data
        XPathDocument xPathDoc = myGetXMLMethod();

        //transform params
        XsltArgumentList oArgs = new XsltArgumentList();

        /* add params as required */

        //fetching and executing the transform directly to the Response here
        xsltmanager.instance.get(@"foo\bar\baz").Transform(xPathDoc, oArgs, Response.OutputStream);
    }
}

0 Stimmen

Wie integrieren Sie es in .NET?

0 Stimmen

Im Wesentlichen nur die Umwandlung gegen Response.OutputStream im Codebehind.

0 Stimmen

Wenn es Ihnen nichts ausmacht, könnten Sie einen Code für die Integration einer .aspx (oder was auch immer) mit xml/xsl zur Verfügung stellen?vielen Dank im Voraus

2voto

Robert Rossney Punkte 91100

In erster Näherung verwende ich XSLT immer dann, wenn ich Informationen als HTML darstellen muss. Fast jedes Mal, wenn ich in den letzten sieben Jahren davon abgewichen bin, habe ich es bereut. Meine kurze Erfahrung mit der HTML-Generierung in Python ist das Einzige, was ich bisher kennengelernt habe, das sie möglicherweise ersetzen kann.

1voto

Marc Gravell Punkte 970173

Nicht so sehr in den ASP.NET-Sachen, aber davor (mit VB6) habe ich es fast ausschließlich (auf dem Server) verwendet, um xml in html umzuwandeln. Ich habe es immer als unglaublich vielseitig empfunden. Ich verwende es auch in meinem " Protokollpuffer "Projekt als Code-Generator-Engine: das Haupt-Framework erzeugt xml, und dann verwende ich eine xsl-Transformation, um die C# auszuspucken. Ich habe gehört, dass die Leute sagen, dass sie xsl nicht intuitiv finden, aber ich mag es wirklich, und es ist mein Standard-Tool bei der Verarbeitung von Xml.

Im Moment schaue ich viel auf ASP.NET MVC, das sich nicht unbedingt für xsl eignet - obwohl es in mancher Hinsicht nicht viel zwischen <%=foo.Name%> y <xsl:value-of select="Name"/> .

-3voto

Vincent Punkte 21318

Die Verwendung von XML/XSL ist mit einem enormen Aufwand verbunden und birgt viele Nachteile.

  1. Sie benötigen einen vollständigen XML-Datensatz, um sicherzustellen, dass XSL nur als Logik-Engine verwendet wird.
  2. Zweitens ist die Steuerung der XSL-Logik unzureichend und von Version zu Version inkonsistent.
  3. Drittens ist die Kombination ein recht schwerfälliger Prozess, der für große Standorte ungeeignet ist.

Wenn Sie auf eine logische Trennung Wert legen, verwenden Sie eine Templating-Sprache (die nicht XSL ist).

0 Stimmen

Ich lehne dies alles ab: XSL ist keine Logikmaschine, sondern eine Präsentationsmaschine. Die "Logik" von XSLT für die Schablonenerstellung ist außerordentlich leistungsfähig und innerhalb eines bestimmten Rahmens verdammt konsistent. Da die Sprache ist entworfen für Templating ist es auch sehr schnell. Cache zu vermeiden Datei IO und verwenden XPathDoc

0 Stimmen

Diese Antwort widerspricht meiner Erfahrung in allen Einzelheiten. Ich weiß nicht einmal, was "die XSL-Logiksteuerung ist schlecht" bedeuten kann.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X