Ausnahme "stylesheet ist zu Komplex" beim laden von großen XSLT-in .NET 4.5

Bin ich immer eine Ausnahme beim laden eines XSLT-stylesheet. Das XSLT-stylesheet ist sehr groß (fast 8000 Zeilen). Leider weiß ich nicht, haben keine Kontrolle über diese, und ich bin nicht in der Lage umgestalten das stylesheet, um es zu verkleinern.

Wir haben vor kurzem aktualisiert .Net Framework 4.5. Das folgende Kommando funktioniert nur vor dem upgrade (wir waren mit .Net Framework 4.0). Nach der Aktualisierung erhalten wir eine XsltException sagt man: "Das stylesheet ist zu Komplex" auf dietransform.Load Linie.

Ich hatte gehofft, dass es irgendeine neue Einstellung, die sagen würde "Stellen Sie mit diesem Befehl arbeiten, wie es in 4.0", aber ich konnte nichts finden, nirgendwo.

Weiß jemand, der einige Grund, warum dieses könnte plötzlich ein problem in der version 4.5? Wie kann es gelöst werden?

XslCompiledTransform transform = new XslCompiledTransform();
transform.Load(XmlReader.Create(report), new XsltSettings { EnableScript = true }, new XmlUrlResolver());

report ist ein MemoryStream-enthält die großen XSLT-stylesheet.

  • Bitte keine tags verwenden, die in Ihrer Frage-Titel
  • Liest sich jetzt viel besser. Vielen Dank für den edit.
  • Bitte do verwenden, Thema, Schlüsselwörter in deiner Frage-Titel, wenn Sie wichtig sind für die Klärung des Themas (auch wenn Sie sich zufällig auch für tags). Die einzige Antwort auf die Frage @Ryan verknüpft empfiehlt Thema Schlagworte (auch tags) in einem Titel wie "Kann ich mit jQuery verwenden, um ..." Die word-stylesheet ist mehrdeutig genug, dass das qualifying mit XSLT in den Titel lohnt.
  • Ja @RyanGates, während der ursprüngliche Titel war lang, es klar gesagt das Problem, während der neue Titel, den Sie Gaben, es war viel mehr zweideutig: Welche Art von stylesheet (CSS -?); Welche Plattform (FireFox?, Java?). Ein Mehrdeutiger Titel zwingt die Menschen zu unnötig die Frage offen, um herauszufinden, was es ist.
  • Ich bin hier falsch. Ich persönlich glaube nicht, dass der Titel mehrdeutig ist, wenn man sich die tags. Das sagte nach der Lektüre der link-mehr eng ich sehen kann, was du meinst, über die Unterscheidung zwischen organischen und gezwungen.
  • Gen S., ich glaube, man muss dankbar sein für diese Fehlermeldung bekommen. 8000 Zeilen code würde in etwa passen auf 134 Seiten -- wer würde schon wollen, zugewiesen werden, dies aufrecht zu erhalten? Vor 10 Jahren fand ich ein 29-Seite C# - Methode in mein client-code-und war fassungslos, -- jetzt dieser schlägt alle Rekorde.
  • Ich war in der Lage das Problem zu reproduzieren. Es geht auch nicht mit der alten XslTransform entweder. Es scheint zu gehen in eine rekursive Methode at System.Xml.Xsl.Qil.QilDepthChecker.Check(QilNode input, Int32 depth) wo es stirbt. Ich konnte nicht herausfinden, wie man die Quelle für das für alle Hinweise entweder.
  • Das stylesheet dynamisch generiert werden, basierend auf Benutzereingaben. Die meisten der Zeit, die das erzeugte stylesheet ist klein, in sehr seltenen Fällen, wird es sehr groß. Das stylesheet Leben nur im Gedächtnis, wenn der Prozess läuft, so gibt es keine Wartung.
  • 8000 Zeilen, klingt nicht sehr groß für mich - etwa die gleiche wie die stylesheets verwenden wir für die Erzeugung des W3C-Spezifikationen. docbook ist sicherlich ist ganz ein bisschen größer. Sie könnten immer versuchen, ein anderes XSLT-Prozessor...
  • Hallo, ich bin aus .NET Framework-Kompatibilität-team. Wir möchten, um diese besser zu verstehen. Können Sie mit uns Kontakt auf netfx45compat bei Microsoft dot com mit klein-Projekt, das Problem zu reproduzieren?
  • E-Mail wurde gesendet.

InformationsquelleAutor Gene S | 2013-04-18
Schreibe einen Kommentar