2009-11-10 5 views
0

J'ai 3 fichiers XSL qui ont des chemins en eux quelque chose comme C: \ templates \ Test \ fichier.pdffichier XSL dynamique

Ce chemin est pas toujours va être la même et plutôt que d'avoir du mal codé dans le XSL, je voudrais que le chemin C: \ templates \ test \ soit remplacé par un tag [BASEPATH] et quand je lis dans le fichier xsl dans l'objet XSLTransform (oui je sais qu'il a été déprécié, je peut déplacer vers XSLCompiledTransform en même temps), je voudrais que le tag [BASEPATH] soit remplacé par le chemin absolu du dossier web (ou Server.MapPath ("~") vu comme il est dans .net

Je pensais que je serais capable de faire une page XSLLoader aspx qui prend le nom du fichier XSL t par le biais de la chaîne de requête, puis renvoie le fichier XSL via le type de contenu xml. Quand j'essaye ceci, j'obtiens une erreur 503 cependant si je ne suis pas sûr si vous pouvez passer des URLs comme ceci dans la méthode de XSLTransform.Load.

Des idées quoi faire?

+0

Qu'est-ce que ça a à voir avec XSL-FO? – Boldewyn

+0

Cela fait partie du XSL - l'utiliser pour faire un PDF. Vous ne savez pas s'il existe un moyen d'utiliser un chemin relatif pour spécifier un graphique externe dans XSL-FO? – Graeme

Répondre

1

Avez-vous regardé les paramètres XSL? Ensuite, la plupart des moteurs XSLT décents permettent de définir un paramètre de niveau racine depuis l'extérieur.

+0

Merci, c'est ainsi que je suis allé - j'ai maintenant la variable utilisée, juste besoin de comprendre comment régler le paramètre de niveau racine à partir du C#. – Graeme

+0

Génial, ça marche maintenant - merci - de passer des arguments en C# à l'objet XslTransform obsolète, vous faites ce qui suit: XsltArgumentList xslArg = new XsltArgumentList(); xslArg.AddParam ("jour", "", jour); xslArg.AddParam ("année", "", année); xslArg.AddParam ("météo", "", météo); XslTransform xslt = nouveau XslTransform(); xslt.Load (feuille de style); XPathDocument xpathdocument = new XPathDocument (filename) XmlTextWriter writer = nouveau XmlTextWriter ("priceClassExample.html", null); xslt.Transform (xpathdocument, xslArg, writer); writer.Fermer(); – Graeme

Questions connexes