300分求:如何让xslt支持document函数(.net)
xslt中有document函数。如果xslt是文件,那么使用XsltTransform.Load装载的xslt自然支持document函数。
但是,我的xslt是通过字符串组合的,我不希望保存为文件,这样,我试了很多种方法,也无法让它支持document函数,我MSDN,google都看了,也照着做了,总是不得要领。看是否有人可以指教一下。
如果上面的方法做不到,用另外的方法也可以,就是让xsl:variable的变量内容是document函数Load文件的内容,如果这样可以做到,一样算OK。
谁要是可以完成,我给300分,决不失言。
附我的方法:(验证过不行的)
public class TestReader : XmlValidatingReader
{
public TestReader(XmlReader reader) : base(reader)
{
ValidationType = ValidationType.None;
EntityHandling = EntityHandling.ExpandEntities;
}
public override string BaseURI
{
get
{
return AppSettings.Current.XmlPath;
}
}
}
public static Stream Transform2Stream(string xmlStr, TextReader xslStream)
{
StringReader xml = new StringReader(xmlStr);
XPathDocument xmlDoc = new XPathDocument(xml);
XmlResolver resolver = new XmlUrlResolver();
XslTransform xsl = null;
xsl = new XslTransform();
XmlTextReader xslReader1 = new XmlTextReader(xslStream);
xslReader1.XmlResolver = resolver;
XmlReader xslReader = new TestReader(xslReader1);
XPathDocument a = new XPathDocument(xslReader, XmlSpace.Preserve);
Evidence evi = System.Xml.XmlSecureResolver.CreateEvidenceForUrl(AppSettings.Current.XmlPath);
xsl.Load(a.CreateNavigator(), resolver, evi);
MemoryStream html = new MemoryStream();
xsl.Transform(xmlDoc, null, html, fResolver);
return html;
}