public void Parse(SqlStruct str, int ind) { //если первый SQL то мы вставляем заголовочные теги if (ind == 0) { sw.WriteLine("<xsl:template match=\"" + this.MainTag + "\"><" + this.MainTag + " xmlns:xsl=\"" + XMLNS + "\"><xsl:apply-templates select=\"" + str.From[0] + "\"/></" + this.MainTag +"></xsl:template>"); } //Если первый SQL запрос, то делаем template match //иначе template name if (ind == 0) sw.WriteLine("<xsl:template match=\"" + str.From[0] + "\">"); else sw.WriteLine("<xsl:template name=\"" + str.From[0] + "\">"); //Получаем имя дочернего элемента (имя тега, которое разделяет на строки, ex. "tr") //string tr_ = GetChildElement((string)listFROM[0]); string tr_ = "tr-" + str.From[0]; //Записываем цикл выборки sw.WriteLine("<xsl:for-each select=\"//" + this.MainTag + "//" + str.From[0] + "\">"); //Пишем разделительный (на строки) тэг if (ind != 0) sw.WriteLine("<" + tr_ + ">"); //Вставляем тока те элементы которые указаны в select-e foreach (string node in str.Select) { //При этом мы должны "пробежать все SQL запросы и посмареть что сюда вставить..." if (f.ifExistInSQL(node) == false) sw.WriteLine("<" + node + "><xsl:value-of select=\"" + node + "\"/></" + node + ">"); else { string tagName = GetTableName(node); sw.WriteLine("<" + node + "><xsl:call-template name=\"" + tagName + "\"/></" + node + ">"); globalid++; } } //закрываем элементы if (ind != 0) sw.WriteLine("</" + tr_ +">"); //конец цикла sw.WriteLine("</xsl:for-each>"); //конец шаблона sw.WriteLine("</xsl:template> "); }
public string CreateSQL(int state) { //Читаем по слову //type = 1 - Вложенный //type = 2 - последовательный SqlStruct SQLst = new SqlStruct(); string word; while ((word = GetWord()) != null){;}; return ""; }