using System; using System.Collections; using System.ComponentModel; using System.Data; using System.Drawing; using System.Web; using System.Web.SessionState; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.HtmlControls; using System.Xml; using System.Xml.XPath; using System.Text; using System.IO; namespace CodeBank.System_Xml_XPath { /// /// Summary description for SortingXML. /// public class SortingXML : System.Web.UI.Page { protected System.Web.UI.WebControls.Label lblSorted; protected System.Web.UI.WebControls.Label lblSorted1; protected System.Web.UI.WebControls.Label lblSorted2; protected System.Web.UI.WebControls.Label AN_0; protected System.Web.UI.WebControls.Label AN_A; protected System.Web.UI.WebControls.Label AN_B; protected System.Web.UI.WebControls.Label AN_C; protected System.Web.UI.WebControls.Label AN_D; protected System.Web.UI.WebControls.Label AN_E; protected System.Web.UI.WebControls.Label AN_F; protected System.Web.UI.WebControls.Label AN_G; protected System.Web.UI.WebControls.Label AN_H; protected System.Web.UI.WebControls.Label AN_I; protected System.Web.UI.WebControls.Label AN_J; protected System.Web.UI.WebControls.Label AN_K; protected System.Web.UI.WebControls.Label AN_L; protected System.Web.UI.WebControls.Label AN_M; protected System.Web.UI.WebControls.Label AN_N; protected System.Web.UI.WebControls.Label AN_O; protected System.Web.UI.WebControls.Label AN_P; protected System.Web.UI.WebControls.Label AN_Q; protected System.Web.UI.WebControls.Label AN_R; protected System.Web.UI.WebControls.Label AN_S; protected System.Web.UI.WebControls.Label AN_T; protected System.Web.UI.WebControls.Label AN_U; protected System.Web.UI.WebControls.Label AN_V; protected System.Web.UI.WebControls.Label AN_W; protected System.Web.UI.WebControls.Label AN_X; protected System.Web.UI.WebControls.Label AN_Y; protected System.Web.UI.WebControls.Label AN_Z; protected System.Web.UI.WebControls.Label AN_TOTAL; public string paraValue=""; private void Page_Load(object sender, System.EventArgs e) { if (File.Exists(Server.MapPath("glossary_data.xml"))) this.lblSorted.Text=""; else { this.lblSorted.Text="You did not generate XML data file for glossary, please use CisTra.NET glossary engine to create it, otherwise contact Ronnie Li for help."; return; } string xpath0 =""; string xpath =""; string xpath1 =""; string xpath2 =""; string xpath3 =""; string xpathCount =""; if (Request.QueryString["id"]!="" && Request.QueryString["id"]!=null ) { paraValue=Request.QueryString["id"].Trim().ToUpper(); xpath0 = "/NewDataSet/Table/GlossaryID[../GlossaryAN='"+paraValue+"']"; //Query select GlossaryAbb AN='O' xpath = "/NewDataSet/Table/GlossaryAbb[../GlossaryAN='"+paraValue+"']"; //Query select GlossaryAbb AN='O' xpath1 = "/NewDataSet/Table/GlossaryDescp[../GlossaryAN='"+paraValue+"']"; //Query select GlossaryAbb AN='O' xpath2 = "/NewDataSet/Table/GlossaryLink[../GlossaryAN='"+paraValue+"']"; //Query select GlossaryAbb AN='O' xpath3 = "/NewDataSet/Table/GlossaryFull[../GlossaryAN='"+paraValue+"']"; //Query select GlossaryAbb AN='O' xpathCount = "count(/NewDataSet/Table/GlossaryAbb[../GlossaryAN='"+paraValue+"'])"; //Count }else{ paraValue="All Glossary"; xpath0 = "/NewDataSet/Table/GlossaryID"; //Query select GlossaryAbb ALL xpath = "/NewDataSet/Table/GlossaryAbb"; //Query select GlossaryAbb ALL xpath1 = "/NewDataSet/Table/GlossaryDescp"; //Query select GlossaryAbb ALL xpath2 = "/NewDataSet/Table/GlossaryLink"; //Query select GlossaryAbb ALL xpath3 = "/NewDataSet/Table/GlossaryFull"; //Query select GlossaryAbb AN='O' xpathCount = "count(/NewDataSet/Table/GlossaryAbb)"; //Count } StringBuilder Sorted = new StringBuilder(); StringBuilder Sorted2 = new StringBuilder(); //Create XPathDocument class so we can get a navigator XPathDocument doc = new XPathDocument(Server.MapPath("glossary_data.xml")); XPathNavigator nav = doc.CreateNavigator(); this.AN_0.Text = nav.Evaluate("count(/NewDataSet/Table/GlossaryAbb[../GlossaryAN='0'])").ToString(); this.AN_A.Text = nav.Evaluate("count(/NewDataSet/Table/GlossaryAbb[../GlossaryAN='A'])").ToString(); this.AN_B.Text = nav.Evaluate("count(/NewDataSet/Table/GlossaryAbb[../GlossaryAN='B'])").ToString(); this.AN_C.Text = nav.Evaluate("count(/NewDataSet/Table/GlossaryAbb[../GlossaryAN='C'])").ToString(); this.AN_D.Text = nav.Evaluate("count(/NewDataSet/Table/GlossaryAbb[../GlossaryAN='D'])").ToString(); this.AN_E.Text = nav.Evaluate("count(/NewDataSet/Table/GlossaryAbb[../GlossaryAN='E'])").ToString(); this.AN_F.Text = nav.Evaluate("count(/NewDataSet/Table/GlossaryAbb[../GlossaryAN='F'])").ToString(); this.AN_G.Text = nav.Evaluate("count(/NewDataSet/Table/GlossaryAbb[../GlossaryAN='G'])").ToString(); this.AN_H.Text = nav.Evaluate("count(/NewDataSet/Table/GlossaryAbb[../GlossaryAN='H'])").ToString(); this.AN_I.Text = nav.Evaluate("count(/NewDataSet/Table/GlossaryAbb[../GlossaryAN='I'])").ToString(); this.AN_J.Text = nav.Evaluate("count(/NewDataSet/Table/GlossaryAbb[../GlossaryAN='J'])").ToString(); this.AN_K.Text = nav.Evaluate("count(/NewDataSet/Table/GlossaryAbb[../GlossaryAN='K'])").ToString(); this.AN_L.Text = nav.Evaluate("count(/NewDataSet/Table/GlossaryAbb[../GlossaryAN='L'])").ToString(); this.AN_M.Text = nav.Evaluate("count(/NewDataSet/Table/GlossaryAbb[../GlossaryAN='M'])").ToString(); this.AN_N.Text = nav.Evaluate("count(/NewDataSet/Table/GlossaryAbb[../GlossaryAN='N'])").ToString(); this.AN_O.Text = nav.Evaluate("count(/NewDataSet/Table/GlossaryAbb[../GlossaryAN='O'])").ToString(); this.AN_P.Text = nav.Evaluate("count(/NewDataSet/Table/GlossaryAbb[../GlossaryAN='P'])").ToString(); this.AN_Q.Text = nav.Evaluate("count(/NewDataSet/Table/GlossaryAbb[../GlossaryAN='Q'])").ToString(); this.AN_R.Text = nav.Evaluate("count(/NewDataSet/Table/GlossaryAbb[../GlossaryAN='R'])").ToString(); this.AN_S.Text = nav.Evaluate("count(/NewDataSet/Table/GlossaryAbb[../GlossaryAN='S'])").ToString(); this.AN_T.Text = nav.Evaluate("count(/NewDataSet/Table/GlossaryAbb[../GlossaryAN='T'])").ToString(); this.AN_U.Text = nav.Evaluate("count(/NewDataSet/Table/GlossaryAbb[../GlossaryAN='U'])").ToString(); this.AN_V.Text = nav.Evaluate("count(/NewDataSet/Table/GlossaryAbb[../GlossaryAN='V'])").ToString(); this.AN_W.Text = nav.Evaluate("count(/NewDataSet/Table/GlossaryAbb[../GlossaryAN='W'])").ToString(); this.AN_X.Text = nav.Evaluate("count(/NewDataSet/Table/GlossaryAbb[../GlossaryAN='X'])").ToString(); this.AN_Y.Text = nav.Evaluate("count(/NewDataSet/Table/GlossaryAbb[../GlossaryAN='Y'])").ToString(); this.AN_Z.Text = nav.Evaluate("count(/NewDataSet/Table/GlossaryAbb[../GlossaryAN='Z'])").ToString(); this.AN_TOTAL.Text = nav.Evaluate("count(/NewDataSet/Table/GlossaryAbb)").ToString(); //Compile xpath expression so we can add a sort to it -START have a problem when do soring --synchronizing problem June 03, 2003 Ronnie Li XPathExpression exp = nav.Compile(xpath); exp.AddSort("GlossaryAN",XmlSortOrder.Ascending,XmlCaseOrder.None,"",XmlDataType.Text); XPathExpression exp0 = nav.Compile(xpath0); exp.AddSort("GlossaryAN",XmlSortOrder.Ascending,XmlCaseOrder.None,"",XmlDataType.Text); XPathExpression exp1 = nav.Compile(xpath1); exp1.AddSort("GlossaryAN",XmlSortOrder.Ascending,XmlCaseOrder.None,"",XmlDataType.Text); XPathExpression exp2 = nav.Compile(xpath2); exp2.AddSort("GlossaryAN",XmlSortOrder.Ascending,XmlCaseOrder.None,"",XmlDataType.Text); XPathExpression exp3 = nav.Compile(xpath3); exp3.AddSort("GlossaryAN",XmlSortOrder.Ascending,XmlCaseOrder.None,"",XmlDataType.Text); XPathNodeIterator nodeIter1 = nav.Select(exp); XPathNodeIterator nodeIter1_0 = nav.Select(exp0); XPathNodeIterator nodeIter1_1 = nav.Select(exp1); XPathNodeIterator nodeIter1_2 = nav.Select(exp2); XPathNodeIterator nodeIter1_3 = nav.Select(exp3); //Compile xpath expression so we can add a sort to it -END , synchronizing problem has been soved on June 04, 2003 // XPathNodeIterator nodeIter1 = nav.Select(xpath); // XPathNodeIterator nodeIter1_1 = nav.Select(xpath1); // XPathNodeIterator nodeIter1_0 = nav.Select(xpath0); while (nodeIter1.MoveNext()) { nodeIter1_1.MoveNext(); nodeIter1_0.MoveNext(); nodeIter1_2.MoveNext(); nodeIter1_3.MoveNext(); Sorted.Append(""+nodeIter1.Current.Value+""+ nodeIter1_3.Current.Value +"
"+nodeIter1_1.Current.Value+ "
"+nodeIter1_2.Current.Value+"
"+"To Top

"); Sorted2.Append(""+nodeIter1.Current.Value+"
"); } // this.lblSorted1.Text ="OIL GOTO"; this.lblSorted1.Text ="Term-"+paraValue+" | Total items:"+nav.Evaluate(xpathCount).ToString(); this.lblSorted2.Text = Sorted2.ToString(); this.lblSorted.Text = Sorted.ToString(); } #region Web Form Designer generated code override protected void OnInit(EventArgs e) { // // CODEGEN: This call is required by the ASP.NET Web Form Designer. // InitializeComponent(); base.OnInit(e); } /// /// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// private void InitializeComponent() { this.Load += new System.EventHandler(this.Page_Load); } #endregion } }