public object Render(IHttpRequest req, HttpResponseHeader res, XmlDocument doc, string xsl_path) { XslCache cache; _cacheLock.AcquireReaderLock(Timeout.Infinite); try { if (!_cache.TryGetValue(xsl_path, out cache)) { cache = new XslCache(xsl_path); LockCookie cookie = _cacheLock.UpgradeToWriterLock(Timeout.Infinite); try { _cache[xsl_path] = cache; } finally { _cacheLock.DowngradeFromWriterLock(ref cookie); } } } finally { _cacheLock.ReleaseReaderLock(); } bool enable_xhtml = (req.Headers.ContainsKey(HttpHeaderNames.Accept) && req.Headers[HttpHeaderNames.Accept].Contains(MIME_XHTML)); if (enable_xhtml) { res[HttpHeaderNames.ContentType] = MIME_XHTML + "; charset=utf-8"; } else { res[HttpHeaderNames.ContentType] = MIME_HTML + "; charset=utf-8"; } return(cache.Transform(doc, !enable_xhtml)); }
public object Render(IHttpRequest req, HttpResponseHeader res, XmlDocument doc, string xsl_path) { XslCache cache; _cacheLock.AcquireReaderLock (Timeout.Infinite); try { if (!_cache.TryGetValue (xsl_path, out cache)) { cache = new XslCache (xsl_path); LockCookie cookie = _cacheLock.UpgradeToWriterLock (Timeout.Infinite); try { _cache[xsl_path] = cache; } finally { _cacheLock.DowngradeFromWriterLock (ref cookie); } } } finally { _cacheLock.ReleaseReaderLock (); } bool enable_xhtml = (req.Headers.ContainsKey (HttpHeaderNames.Accept) && req.Headers[HttpHeaderNames.Accept].Contains (MIME_XHTML)); if (enable_xhtml) { res[HttpHeaderNames.ContentType] = MIME_XHTML + "; charset=utf-8"; } else { res[HttpHeaderNames.ContentType] = MIME_HTML + "; charset=utf-8"; } return cache.Transform (doc, !enable_xhtml); }
private byte[] TransformToBytes(XmlDocument doc, string xslTemplate, out Encoding outputEncoding) { using (var ms = new MemoryStream()) { XslCompiledTransform xsl = XslCache.GetXslTransform(new[] { xslTemplate }); outputEncoding = xsl.OutputSettings.Encoding; xsl.Transform(doc.CreateNavigator(), null, ms); ms.Flush(); return(ms.ToArray()); } }