コード例 #1
0
        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));
        }
コード例 #2
0
        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);
        }
コード例 #3
0
ファイル: CodeGenerator.cs プロジェクト: yuzs/CodePorter
 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());
     }
 }