private System.Xml.Xsl.XslCompiledTransform HandleXSLT() { string xsltindata = _innerData.ToString(); StringBuilder xsltsb = new StringBuilder(); if (!string.IsNullOrEmpty(_xsltstring)) { xsltsb.Append(xsltindata); } else { xsltsb.Append("<?xml version=\"1.0\" encoding=\"").Append(_threadEntity.WebSetting.Encoding.BodyName).Append("\"?>"); xsltsb.Append("<xsl:stylesheet version=\"1.0\" xmlns:xsl=\"http://www.w3.org/1999/XSL/Transform\">"); xsltsb.Append("<xsl:output method=\"html\" omit-xml-declaration=\"yes\" version=\"1.0\" encoding=\"").Append(_threadEntity.WebSetting.Encoding.BodyName).Append("\" />"); xsltsb.Append("<xsl:template match=\"/\">"); xsltsb.Append(xsltindata); xsltsb.Append("</xsl:template>"); xsltsb.Append("</xsl:stylesheet>"); } if (!string.IsNullOrEmpty(_linktemplate)) { xsltsb.Replace("{link}", string.Format(_linktemplate, _index, _max)); } string _xsltTemplate = xsltsb.ToString(); System.Xml.Xsl.XslCompiledTransform xslTransform = Xy.Web.Cache.XslCompiledTransform.Get(_xsltTemplate); return(xslTransform); }
private string HandleXSLT() { if (!string.IsNullOrEmpty(_xsltPath)) { using (System.IO.FileStream fs = new System.IO.FileStream(_threadEntity.WebSetting.XsltDir + _xsltPath, System.IO.FileMode.Open, System.IO.FileAccess.Read, System.IO.FileShare.Read)) { using (System.IO.StreamReader sr = new System.IO.StreamReader(fs)) { _xsltLoaded = true; return(sr.ReadToEnd()); } } } else { StringBuilder xsltsb = new StringBuilder(); xsltsb.Append("<?xml version=\"1.0\" encoding=\"").Append(_threadEntity.WebSetting.Encoding.BodyName).Append("\"?>"); xsltsb.Append("<xsl:stylesheet version=\"1.0\" xmlns:xsl=\"http://www.w3.org/1999/XSL/Transform\""); if (_enableCode) { xsltsb.Append(" xmlns:msxsl=\"urn:schemas-microsoft-com:xslt\""); } if (_enableScript) { xsltsb.Append(" xmlns:xyxsl=\"http://www.xiaoyang.com/HodeNamespace\""); } xsltsb.Append(">"); xsltsb.Append("<xsl:output method=\"html\" omit-xml-declaration=\"yes\" version=\"1.0\" encoding=\"").Append(_threadEntity.WebSetting.Encoding.BodyName).Append("\" />"); if (_enableScript) { xsltsb.Append("<xsl:namespace-alias stylesheet-prefix=\"xyxsl\" result-prefix=\"xsl\"/>"); } if (!string.IsNullOrEmpty(_root)) { xsltsb.Append(string.Format("<xsl:template match=\"{0}\">", _root)); } else { string _temp = _dataBuilder.GetRoot(); if (string.IsNullOrEmpty(_temp)) { xsltsb.Append("<xsl:template match=\"DataTable/DataItem\">"); } else { xsltsb.Append(string.Format("<xsl:template match=\"{0}\">", _temp)); } } xsltsb.Append(_innerData.ToString()); xsltsb.Append("</xsl:template>"); xsltsb.Append("</xsl:stylesheet>"); _xsltLoaded = true; return(xsltsb.ToString()); } }
public void Handle(ThreadEntity CurrentThreadEntity, Page.PageAbstract CurrentPageClass, HTMLContainer ContentContainer) { _threadEntity = CurrentThreadEntity; _threadEntity.ControlIndex += 1; string _content = string.Empty; if (_preEnableScript && _innerData.Length > 0) { Control.ControlAnalyze _controls = Cache.PageAnalyze.GetInstance(CurrentThreadEntity, CurrentPageClass, this.Map); if (!_controls.IsHandled || CurrentPageClass.WebSetting.DebugMode) { _controls.SetContent(_innerData.ToArray()); _controls.Analyze(); } HTMLContainer _temp = new HTMLContainer(_innerData.Encoding); _controls.Handle(CurrentPageClass, _temp); _content = _temp.ToString(); } else { _content = _innerData.ToString(); } if (_append) { string _originalContent = string.Empty; if (CurrentPageClass.PageData[_dataName] != null) { _originalContent = CurrentPageClass.PageData[_dataName].GetDataString(); } CurrentPageClass.PageData.Add(_dataName, _originalContent + _content); } else { CurrentPageClass.PageData.Add(_dataName, _content); } _threadEntity.ControlIndex -= 1; }
public void Handle(ThreadEntity CurrentThreadEntity, Page.PageAbstract CurrentPageClass, HTMLContainer ContentContainer) { _threadEntity = CurrentThreadEntity; _threadEntity.ControlIndex += 1; string _content = string.Empty; if (_preEnableScript && _innerData.Length > 0) { Control.ControlAnalyze _controls = Cache.PageAnalyze.GetInstance(CurrentThreadEntity, CurrentPageClass, this.Map); if (!_controls.IsHandled || CurrentPageClass.WebSetting.DebugMode) { _controls.SetContent(_innerData.ToArray()); _controls.Analyze(); } HTMLContainer _temp = new HTMLContainer(_innerData.Encoding); _controls.Handle(CurrentPageClass, _temp); _content = _temp.ToString(); } else { _content = _innerData.ToString(); } if (_append) { string _originalContent = string.Empty; if (CurrentPageClass.PageData[_dataName] != null) _originalContent = CurrentPageClass.PageData[_dataName].GetDataString(); CurrentPageClass.PageData.Add(_dataName, _originalContent + _content); } else { CurrentPageClass.PageData.Add(_dataName, _content); } _threadEntity.ControlIndex -= 1; }
public void Handle(ThreadEntity CurrentThreadEntity, Page.PageAbstract CurrentPageClass, HTMLContainer ContentContainer) { _threadEntity = CurrentThreadEntity; if (_webConfig == null) { _webConfig = CurrentPageClass.WebSetting; } _threadEntity.ControlIndex += 1; HTMLContainer _innerHTML = new HTMLContainer(ContentContainer.Encoding); _fillContentDelegate(_settingProperty, CurrentThreadEntity, CurrentPageClass, _innerHTML); switch (_mode) { case TagMode.Get: break; case TagMode.Compare: bool _passed = false; string _dataValue = _innerHTML.ToString(); _innerHTML.Clear(); switch (_compareMode) { case CompareMode.Equal: if (string.Compare(_dataValue, _compareValue) == 0) { _passed = true; } break; case CompareMode.NotEqual: if (string.Compare(_dataValue, _compareValue) != 0) { _passed = true; } break; case CompareMode.Greater: if (string.Compare(_dataValue, _compareValue) > 0) { _passed = true; } break; case CompareMode.Lesser: if (string.Compare(_dataValue, _compareValue) < 0) { _passed = true; } break; case CompareMode.GreaterAndEqual: if (string.Compare(_dataValue, _compareValue) >= 0) { _passed = true; } break; case CompareMode.LesserAndEqual: if (string.Compare(_dataValue, _compareValue) <= 0) { _passed = true; } break; } if (_passed) { _innerHTML.Write(_innerData); } break; case TagMode.Exist: if (_innerHTML.Length > 0) { _innerHTML.Clear(); _innerHTML.Write(_innerData); } break; case TagMode.NotExist: if (_innerHTML.Length > 0) { _innerHTML.Clear(); } else { _innerHTML.Write(_innerData); } break; } if (_innerHTML.Length == 0 && !string.IsNullOrEmpty(_defaultValue)) { ContentContainer.Write(_defaultValue); } else { if (_enableScript) { Control.ControlAnalyze _controls = new ControlAnalyze(CurrentThreadEntity, this.Map, _useInnerTag); _controls.SetContent(_innerHTML.ToArray()); _controls.Analyze(); _controls.Handle(CurrentPageClass, ContentContainer); } else { ContentContainer.Write(_innerHTML); } } _threadEntity.ControlIndex -= 1; }
public void Handle(string map, string filePath, bool enableScript, bool isIncludePage) { #if DEBUG Xy.Tools.Debug.Log.WriteEventLog("start page:" + map); #endif string _staticCacheDir = string.Empty, _staticCacheFile = string.Empty, _staticCachePath = string.Empty; if (_threadEntity.URLItem.EnableCache && !isIncludePage) { _staticCacheDir = WebSetting.CacheDir + "PageCache\\" + _threadEntity.URL.Dir.Replace('/', '\\'); _staticCacheFile = filePath + (_threadEntity.URL.HasParam ? _threadEntity.URL.Param.Replace('?', '#') : string.Empty); _staticCachePath = _staticCacheDir + _staticCacheFile + ".xycache"; if (!UpdateCache(_staticCachePath, DateTime.Now)) { if (System.IO.File.Exists(_staticCachePath)) { DateTime _modifiedTime = System.IO.File.GetLastWriteTime(_staticCachePath); if (Xy.Tools.IO.File.IsClientCached(_request.Headers["If-Modified-Since"], _modifiedTime) && !_webSetting.DebugMode) { _response.StatusCode = 304; _response.SuppressContent = true; } else { _response.Cache.SetLastModified(DateTime.Now); if (_threadEntity.URLItem.Age.TotalMinutes > 0) { _response.Cache.SetMaxAge(_threadEntity.URLItem.Age); _response.Cache.SetExpires(DateTime.Now.Add(_threadEntity.URLItem.Age)); _response.Expires = Convert.ToInt32(_threadEntity.URLItem.Age.TotalMinutes); _response.ExpiresAbsolute = DateTime.Now.Add(_threadEntity.URLItem.Age); _response.AddHeader("Cache-Control", "max-age=" + _threadEntity.URLItem.Age.TotalMinutes); } _htmlContainer.Write(System.IO.File.ReadAllBytes(_staticCachePath)); } return; } } } onGetRequest(); #if DEBUG Xy.Tools.Debug.Log.WriteEventLog(map + " page process:onGetRequest finished"); #endif Validate(); #if DEBUG Xy.Tools.Debug.Log.WriteEventLog(map + " page process:Validate finished"); #endif string _sourcefile = string.Empty; if (!string.IsNullOrEmpty(filePath)) { _sourcefile = LoadSourceFile((isIncludePage ? _webSetting.IncludeDir : _webSetting.PageDir) + filePath); #if DEBUG Xy.Tools.Debug.Log.WriteEventLog(map + " page process:LoadSourceFile finished"); #endif } Control.ControlAnalyze _controls = Cache.PageAnalyze.GetInstance(_threadEntity, this, map); if (!_controls.IsHandled || WebSetting.DebugMode) { if (!string.IsNullOrEmpty(_sourcefile)) { _content = System.IO.File.ReadAllBytes(_sourcefile); _controls.SetContent(_content); } } if (_contentChanged) { _controls.SetContent(_content); } if (enableScript) { if (!_controls.IsHandled) { _controls.Analyze(); } HandleControl(_controls.ControlCollection); } #if DEBUG Xy.Tools.Debug.Log.WriteEventLog(map + " page process:HandleControl finished"); #endif _controls.Handle(this, _htmlContainer); #if DEBUG Xy.Tools.Debug.Log.WriteEventLog(map + " controls handled"); #endif OutputHtml(_htmlContainer); #if DEBUG Xy.Tools.Debug.Log.WriteEventLog(map + " page process:OutputHtml finished"); #endif if (_threadEntity.URLItem.EnableCache && !isIncludePage) { Xy.Tools.IO.File.ifNotExistsThenCreate(_staticCachePath); using (System.IO.FileStream fs = new System.IO.FileStream(_staticCachePath, System.IO.FileMode.Create, System.IO.FileAccess.Write, System.IO.FileShare.Read)) { using (System.IO.StreamWriter sw = new System.IO.StreamWriter(fs)) { try { sw.Write(_htmlContainer.ToString()); sw.Flush(); } finally { sw.Close(); fs.Close(); } } } #if DEBUG Xy.Tools.Debug.Log.WriteEventLog(map + " page cache writed"); #endif } #if DEBUG Xy.Tools.Debug.Log.WriteEventLog(map + " end"); #endif }
public void Handle(ThreadEntity CurrentThreadEntity, Page.PageAbstract CurrentPageClass, HTMLContainer ContentContainer) { _threadEntity = CurrentThreadEntity; _threadEntity.ControlIndex++; if (_webSetting == null) _webSetting = CurrentPageClass.WebSetting; HTMLContainer _container = new HTMLContainer(_webSetting.Encoding); Xy.Web.Page.PageAbstract _page; if (string.IsNullOrEmpty(_type)) _type = "Xy.Web,Xy.Web.Page.EmptyPage"; _page = Runtime.Web.PageClassLibrary.Get(_type); _page.Init(CurrentPageClass, _webSetting, _container); if (_extValues != null) { for (int i = 0; i < _extValues.Count; i++) { if (_page.Request.Values[_extValues.Keys[i]] != null) { _page.Request.Values[_extValues.Keys[i]] = _extValues[i]; } else { _page.Request.Values.Add(_extValues.Keys[i], _extValues[i]); } } } string _staticCacheDir = string.Empty, _staticCacheFile = string.Empty, _staticCachePath = string.Empty; if (_cached) { _staticCacheDir = _webSetting.CacheDir + "IncludeCache\\" + _threadEntity.URL.Dir.Replace('/', '\\'); _staticCacheFile = _file + _valueString; _staticCachePath = _staticCacheDir + _staticCacheFile + ".xycache"; if (!_page.UpdateCache(_staticCachePath, DateTime.Now)) { if (System.IO.File.Exists(_staticCachePath)) { ContentContainer.Write(System.IO.File.ReadAllBytes(_staticCachePath)); return; } } } if (_innerData != null && _innerData.HasContent) { _page.SetContent(_innerData); } _page.Handle(_map, _file, _enableScript, true); if (_cached) { Xy.Tools.IO.File.ifNotExistsThenCreate(_staticCachePath); using (System.IO.FileStream fs = new System.IO.FileStream(_staticCachePath, System.IO.FileMode.Create, System.IO.FileAccess.Write, System.IO.FileShare.Read)) { using (System.IO.StreamWriter sw = new System.IO.StreamWriter(fs)) { try { sw.Write(_container.ToString()); sw.Flush(); } finally { sw.Close(); fs.Close(); } } } } ContentContainer.Write(_container); //ContentContainer.Write(_page.HTMLContainer); _threadEntity.ControlIndex--; }
public void Handle(ThreadEntity CurrentThreadEntity, Page.PageAbstract CurrentPageClass, HTMLContainer ContentContainer) { _threadEntity = CurrentThreadEntity; _threadEntity.ControlIndex++; if (_webSetting == null) { _webSetting = CurrentPageClass.WebSetting; } HTMLContainer _container = new HTMLContainer(_webSetting.Encoding); Xy.Web.Page.PageAbstract _page; if (string.IsNullOrEmpty(_type)) { _type = "Xy.Web,Xy.Web.Page.EmptyPage"; } _page = Runtime.Web.PageClassLibrary.Get(_type); _page.Init(CurrentPageClass, _webSetting, _container); if (_extValues != null) { for (int i = 0; i < _extValues.Count; i++) { if (_page.Request.Values[_extValues.Keys[i]] != null) { _page.Request.Values[_extValues.Keys[i]] = _extValues[i]; } else { _page.Request.Values.Add(_extValues.Keys[i], _extValues[i]); } } } string _staticCacheDir = string.Empty, _staticCacheFile = string.Empty, _staticCachePath = string.Empty; if (_cached) { _staticCacheDir = _webSetting.CacheDir + "IncludeCache\\" + _threadEntity.URL.Dir.Replace('/', '\\'); _staticCacheFile = _file + _valueString; _staticCachePath = _staticCacheDir + _staticCacheFile + ".xycache"; if (!_page.UpdateCache(_staticCachePath, DateTime.Now)) { if (System.IO.File.Exists(_staticCachePath)) { ContentContainer.Write(System.IO.File.ReadAllBytes(_staticCachePath)); return; } } } if (_innerData != null && _innerData.HasContent) { _page.SetContent(_innerData); } _page.Handle(_map, _file, _enableScript, true); if (_cached) { Xy.Tools.IO.File.ifNotExistsThenCreate(_staticCachePath); using (System.IO.FileStream fs = new System.IO.FileStream(_staticCachePath, System.IO.FileMode.Create, System.IO.FileAccess.Write, System.IO.FileShare.Read)) { using (System.IO.StreamWriter sw = new System.IO.StreamWriter(fs)) { try { sw.Write(_container.ToString()); sw.Flush(); } finally { sw.Close(); fs.Close(); } } } } ContentContainer.Write(_container); //ContentContainer.Write(_page.HTMLContainer); _threadEntity.ControlIndex--; }