powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Обращение к категории в xsl
25 сообщений из 28, страница 1 из 2
Обращение к категории в xsl
    #38260703
t1mon1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть таблица в sql называется News. Так есть 2 категории новостей hot и ice. Как сделеть так чтобы мы выводили только ice.
Щас обращается полность и к hot и к ice
Код: xml
1.
<element type = "WideSite.Elements.News"> </element>
...
Рейтинг: 0 / 0
Обращение к категории в xsl
    #38260715
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Какой-то xml, какая-то sql-таблица... И что?
...
Рейтинг: 0 / 0
Обращение к категории в xsl
    #38260721
t1mon1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот кусок из другого файла.

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
<xsl:for-each select="/page/element[@type='WideSite.Elements.News']/list/item">
				
		<xsl:if test="@type_alias = 'ice' and position() != 1">
			<xsl:attribute name="class">ice</xsl:attribute>
		</xsl:if>												
						
							<xsl:if test="@type_alias = 'hot'">
<xsl:attribute name="class">hot</xsl:attribute>
			</xsl:if>												
			</xsl:for-each>
...
Рейтинг: 0 / 0
Обращение к категории в xsl
    #38260723
t1mon1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AntonariyКакой-то xml, какая-то sql-таблица... И что?

тоесть?
...
Рейтинг: 0 / 0
Обращение к категории в xsl
    #38260724
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: xml
1.
<xsl:for-each select="/page/element[@type='WideSite.Elements.News']/list/item[@type_alias = 'ice']">
...
Рейтинг: 0 / 0
Обращение к категории в xsl
    #38260726
t1mon1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Antonariy
Код: xml
1.
<xsl:for-each select="/page/element[@type='WideSite.Elements.News']/list/item[@type_alias = 'ice']">


мне сюда надо

Код: xml
1.
2.
3.
<element type = "WideSite.Elements.News">
 
</element>
...
Рейтинг: 0 / 0
Обращение к категории в xsl
    #38260730
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
t1mon1AntonariyКакой-то xml, какая-то sql-таблица... И что?

тоесть?То есть это не значит вообще ничего. Никаких данных для ответа на поставленный вопрос в первом посте не было.
...
Рейтинг: 0 / 0
Обращение к категории в xsl
    #38260734
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
t1mon1Antonariy
Код: xml
1.
<xsl:for-each select="/page/element[@type='WideSite.Elements.News']/list/item[@type_alias = 'ice']">


мне сюда надо

Код: xml
1.
2.
3.
<element type = "WideSite.Elements.News">
 
</element>

Опять бессмыслица.
...
Рейтинг: 0 / 0
Обращение к категории в xsl
    #38260741
t1mon1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Antonariyt1mon1пропущено...

мне сюда надо

Код: xml
1.
2.
3.
<element type = "WideSite.Elements.News">
 
</element>

Опять бессмыслица.

мне надо место type = "WideSite.Elements.News" (обращение ко всей таблице) обратится к type = "WideSite.Elements.News.ice" (но это неправельно)
...
Рейтинг: 0 / 0
Обращение к категории в xsl
    #38260774
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тебе нужно неправильное — это твои проблемы. Как сделать правильно в условиях полной неизвестности о способе формирования xml, я показал.
...
Рейтинг: 0 / 0
Обращение к категории в xsl
    #38260782
t1mon1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Antonariy,
Код: xml
1.
<element select="/page/element[@type='WideSite.Elements.News']/list/item[@type_alias = 'ice']">


Вот я вставил, но всеравно неработает
...
Рейтинг: 0 / 0
Обращение к категории в xsl
    #38260844
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Потому что перед вставкой нужно мозг включать.

Куда я текст вставил? А ты куда?
...
Рейтинг: 0 / 0
Обращение к категории в xsl
    #38260854
t1mon1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AntonariyПотому что перед вставкой нужно мозг включать.

Куда я текст вставил? А ты куда?

Ну вот поэтому и спрашивою, потомы что незнаю. Подскажи как.

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
196.
197.
198.
199.
200.
201.
202.
203.
204.
205.
206.
207.
208.
209.
210.
211.
212.
213.
214.
215.
216.
217.
218.
219.
220.
221.
222.
223.
224.
225.
226.
227.
228.
229.
230.
231.
232.
233.
234.
235.
236.
237.
238.
239.
240.
241.
242.
243.
244.
245.
246.
247.
248.
249.
250.
251.
252.
253.
254.
255.
256.
257.
258.
259.
260.
261.
262.
263.
264.
265.
266.
267.
268.
269.
270.
271.
272.
273.
274.
275.
276.
277.
278.
279.
280.
281.
282.
283.
284.
285.
286.
287.
288.
289.
290.
291.
292.
293.
294.
295.
296.
297.
298.
299.
300.
301.
302.
303.
304.
305.
using System;
using System.Data;
using System.Data.SqlClient;
using System.Xml;
using Wide;
using WideSite;

namespace WideSite.Elements
{
	public class News: ElementBase
	{
		public News():base(){}

		#region Protected	Fields
		/// <summary>
		/// Тип элемента
		/// </summary>
		public override String ElementType
		{
			get{ return "WideSite.Elements.News"; }
		}
		#endregion

		private string GetParameterName(string key, string def_name)
		{
			XmlNode pn = ConfiguratorXml.SelectSingleNode( "parameters/add[@key='" + key + "']/@name");
			return ( pn != null ) ? pn.Value : def_name;
		}

		private string GetParameterValue(string key, string def_name, string def_value)
		{
			string spn = GetParameterName(key, def_name);
			if( spn != null && spn != "" ) 
			{
				// Значение параметра сначала пытаемся получить из запроса
				string sval = Page.Context.Request[spn];
				if( sval != null ) return sval;
			}
			// Получаем значение параметра из конфигуратора
			XmlNode pv = ConfiguratorXml.SelectSingleNode( "parameters/add[@key='" + key + "']/@value");
			return ( pv != null ) ? pv.Value : def_value;
		}

		private void AddWhere(ref string sWhere, string sWhereItem)
		{
			if( sWhere == "" ) 
				sWhere = " where (" + sWhereItem + ")";
			else
				sWhere += " and (" + sWhereItem + ")";
		}


		#region	GenerateXml

		protected override void GenerateXml()
		{
			base.GenerateXml();

			string sNewsId = GetParameterValue("NewsId", "newsid", null);
			string sNewsList = GetParameterValue("NewsList", "newslist", "0");
			if( sNewsId != null )
			{
				#region Генерация новостной статьи
				SqlCommand cmd = Page.DataProvider.Command as SqlCommand;
				SqlDataReader dr = null;
				
				cmd.CommandText = "SELECT * FROM vw_News WHERE Id = @Id";
                cmd.Parameters.Clear();
			    cmd.Parameters.AddWithValue("@Id", sNewsId);

				try
				{
					dr = cmd.ExecuteReader();
					while( dr.Read() )
					{
                        XmlElement article = XmlUtils.AppendElement(ResultXml, "article", "");
                        XmlUtils.AppendAttribute(article, "id", Convert.ToString(dr["id"]));
                        XmlUtils.AppendAttribute(article, "typeid", Convert.ToString(dr["typeid"]));
                        XmlUtils.AppendAttribute(article, "type", Convert.ToString(dr["type"]));
                        XmlUtils.AppendAttribute(article, "title", Convert.ToString(dr["title"]));

						if (dr["Attributes"] != null && dr["Attributes"] != DBNull.Value)
						{
							try
							{
								XmlDocument attrs = new XmlDocument();
								attrs.LoadXml(Convert.ToString(dr["Attributes"]));
								article.AppendChild(article.OwnerDocument.ImportNode(attrs.FirstChild, true));
							}
							catch { }
						}

                        XmlUtils.AppendCDataElement(article, "short-content", Convert.ToString(dr["short"]));
                        XmlUtils.AppendCDataElement(article, "content", Convert.ToString(dr["Content"]));

						if (dr["newsdate"] != null)
							XmlUtils.AppendAttribute(article, "date", Convert.ToDateTime(dr["newsdate"]).ToString("dd.MM.yyyy"));
                    }
					dr.Close();
				}
				catch( Exception ex )
				{
					Page.AddException( ex, "WideSite.DocumentWriter:GenerateXml" );
				}
				finally
				{
					if( dr!= null && !dr.IsClosed )
						dr.Close();
					dr = null;
				} 
				#endregion
			}
			if( sNewsId == null || sNewsList == "1" )
			{
			
			
							
			
				#region Генерация списка новостей

				SqlCommand cmd = Page.DataProvider.Command as SqlCommand;
				SqlDataReader dr = null;
				cmd.Parameters.Clear();

			    int sTop;
                string sQuery;
				//Длина списка новостей
				string sSize = GetParameterValue("Size", "size", null);
                if (!int.TryParse(sSize, out sTop))
                    sTop = 100;
                
                sQuery = "SELECT TOP " + sTop + " * FROM vw_News";

				string sWhere = "";

				//Новости с определенным языком
				string s = Page.Settings["language"];
                if (s != null)
                {
                    AddWhere(ref sWhere, "langid is null or langid=@langid");
                    cmd.Parameters.AddWithValue("@langid", s);
                }
			    //Новости за определенный день
				s = GetParameterValue("Day", "day", null);
                if (s != null)
                {
                    AddWhere(ref sWhere, "Day(NewsDate)=@DayNewsDate");
                    cmd.Parameters.AddWithValue("@DayNewsDate", s);
                }
			    //Новости за определенный месяц
				s = GetParameterValue("Month", "month", null);
                if (s != null)
                {
                    AddWhere(ref sWhere, "Month(NewsDate)=@MonthNewsDate");
                    cmd.Parameters.AddWithValue("@MonthNewsDate", s);
                }
			    //Новости за определенный год
				s = GetParameterValue("Year", "year", null);
                if (s != null)
                {
                    AddWhere(ref sWhere, "Year(NewsDate)=@YearNewsDate");
                    cmd.Parameters.AddWithValue("@YearNewsDate", s);
                }
			    //Только архивные новости
				s = GetParameterValue("Archive", "archive", null);
                if (s != null)
                {
                    AddWhere(ref sWhere, "IsArchive=@IsArchive");
                    cmd.Parameters.AddWithValue("@IsArchive", s);
                }
			    //Только новости, предназначенные для показа на первой странице
				s = GetParameterValue("FirstPage", "firstpage", null);
                if (s != null)
                {
                    AddWhere(ref sWhere, "IsFirstPage=@IsFirstPage");
                    cmd.Parameters.AddWithValue("@IsFirstPage", s);
                }

			    //Тип новостей( новостная лента )
				string sType = GetParameterValue("Type", "newstype", null);
				if( sType != null )
				{
					AddWhere(ref sWhere, "Type=@type or TypeAlias=@type");
					cmd.Parameters.Add("@type", SqlDbType.VarChar);
					cmd.Parameters["@type"].Value = sType;
				}
				//Начало периода, за который получать новости
				s = GetParameterValue("StartDate", "startdate", null);
				if( s != null )
				{
					AddWhere(ref sWhere, "NewsDate>=@startdate");
					cmd.Parameters.Add("@startdate", SqlDbType.DateTime);
					cmd.Parameters["@startdate"].Value = DateTime.Parse(s);
				}
				//Конец периода
				s = GetParameterValue("EndDate", "enddate", null);
				if( s != null )
				{
					AddWhere(ref sWhere, "NewsDate<=@enddate");
					cmd.Parameters.Add("@enddate", SqlDbType.DateTime);
					cmd.Parameters["@enddate"].Value = DateTime.Parse(s);
				}

				//Сортировка новостей
				s = GetParameterValue("Sort", "sort", "desc");

				//Показывать в списке новостей текст новости
				Boolean showContent = ( GetParameterValue( "ShowContent", "showcontent", "" ).ToLower() == "true" );

                if(s == "asc")
                    cmd.CommandText = sQuery + sWhere + " order by NewsDate " + s;
                else
                    cmd.CommandText = sQuery + sWhere + " order by NewsDate desc";

			    XmlElement list = XmlUtils.AppendElement( ResultXml, "list", "" );
				XmlElement dates = ResultXml.OwnerDocument.CreateElement("dates");
				try
				{
					dr = cmd.ExecuteReader();
					int c_year=0, c_month=0, c_day=0;
					XmlElement el_year = null, el_month = null, el_day = null;

					while( dr.Read() )
					{
						XmlElement item = XmlUtils.AppendElement( list, "item", "" );
						XmlUtils.AppendAttribute( item, "id", Convert.ToString( dr["id"] ) );
						XmlUtils.AppendAttribute( item, "title", Convert.ToString( dr["title"] ) );
						if( sType == null )
						{
							XmlUtils.AppendAttribute( item, "type", Convert.ToString( dr["Type"] ) );
							XmlUtils.AppendAttribute( item, "type_alias", Convert.ToString( dr["TypeAlias"] ) );
						}

						if( dr["Attributes"] != null && dr["Attributes"] != DBNull.Value )
						{
							try
							{
								XmlDocument attrs = new XmlDocument();
								attrs.LoadXml( Convert.ToString( dr["Attributes"] ) );
								item.AppendChild( item.OwnerDocument.ImportNode( attrs.FirstChild, true ) );
							}
							catch{}
						}

						//Краткое описание новости
						if( dr["Short"] != null && dr["Short"] != DBNull.Value )
							XmlUtils.AppendCDataElement( item, "short-description", Convert.ToString( dr["Short"] ) );

						//Вывести полный текст новости
						if( dr["Content"] != null && dr["Content"] != DBNull.Value && showContent )
							XmlUtils.AppendCDataElement( item, "content", Convert.ToString(dr["Content"]) );
						
						DateTime dtm = Convert.ToDateTime( dr["NewsDate"] );
						XmlElement date = XmlUtils.AppendElement( item, "date", "");
						XmlUtils.AppendAttribute( date, "year", dtm.Year );
						XmlUtils.AppendAttribute( date, "month", dtm.Month );
                        XmlUtils.AppendAttribute( date, "month0", dtm.Month.ToString("D2"));
						XmlUtils.AppendAttribute( date, "day", dtm.Day );
                        XmlUtils.AppendAttribute( date, "day0", dtm.Day.ToString("D2"));
						XmlUtils.AppendAttribute( date, "hour", dtm.Hour );
						XmlUtils.AppendAttribute( date, "minute", dtm.Minute );
						XmlUtils.AppendAttribute( date, "time", dtm.ToShortTimeString() );
						XmlUtils.AppendAttribute( date, "short_date", dtm.ToString("dd.MM"));

						if( c_year != dtm.Year )
						{
							el_year = XmlUtils.AppendElement(dates, "year", "");
							XmlUtils.AppendAttribute(el_year, "value", dtm.Year);
						}
						if( c_month != dtm.Month || c_year != dtm.Year )
						{
							el_month = XmlUtils.AppendElement(el_year, "month", "");
							XmlUtils.AppendAttribute(el_month, "value", dtm.Month);
							XmlUtils.AppendAttribute(el_month, "value0", dtm.Month.ToString("D2"));
						}
						if( c_day != dtm.Day || c_month != dtm.Month || c_year != dtm.Year )
						{
							el_day = XmlUtils.AppendElement(el_month, "day", "");
							XmlUtils.AppendAttribute(el_day, "value", dtm.Day);
							XmlUtils.AppendAttribute(el_day, "value0", dtm.Day.ToString("D2"));
						}
						c_year = dtm.Year; c_month = dtm.Month; c_day = dtm.Day;

					}
					list.AppendChild(dates);
					dr.Close();
				}
				catch( Exception ex )
				{
					Page.AddException( ex, "WideSite.DocumentWriter:GenerateXml" );
				}
				finally
				{
					if( dr!= null && !dr.IsClosed )
						dr.Close();
					dr = null;
				} 
				#endregion
			}
		}	
		
		#endregion
		
	}
}



вот WideSite.Elements.News
...
Рейтинг: 0 / 0
Обращение к категории в xsl
    #38260874
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Насколько я понял из всего вышесказанного, вот эта фигня
Код: xml
1.
<element type = "WideSite.Elements.News"> </element>

является частью документа запроса к некой системе. А последняя простыня это обработчик того запроса. Обработчик способен каким-то образом принимать параметр "тип новости" (AddWhere(ref sWhere, "Type=@type or TypeAlias=@type");), но как его передать должен знать ты, потому что тебя по какой-то ошибке допустили до разработки этой системы.

Здесь структура запроса никому не известна.
...
Рейтинг: 0 / 0
Обращение к категории в xsl
    #38260886
t1mon1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AntonariyНасколько я понял из всего вышесказанного, вот эта фигня
Код: xml
1.
<element type = "WideSite.Elements.News"> </element>

является частью документа запроса к некой системе. А последняя простыня это обработчик того запроса. Обработчик способен каким-то образом принимать параметр "тип новости" (AddWhere(ref sWhere, "Type=@type or TypeAlias=@type");), но как его передать должен знать ты, потому что тебя по какой-то ошибке допустили до разработки этой системы.

Здесь структура запроса никому не известна.

Код: xml
1.
2.
3.
4.
5.
<element type = "WideSite.Elements.News">
 <parameters>
  <add key="RSS" value="true" />
 </parameters> 
</element>



Вот полность.
...
Рейтинг: 0 / 0
Обращение к категории в xsl
    #38260889
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну и? До сих пор не знаешь?
...
Рейтинг: 0 / 0
Обращение к категории в xsl
    #38260893
t1mon1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AntonariyНу и? До сих пор не знаешь?

Да незнаю. Я не разраб этой системы, я добровольный допилеватель.
...
Рейтинг: 0 / 0
Обращение к категории в xsl
    #38260896
t1mon1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Antonariy,

который мало чего знает, и только учится
...
Рейтинг: 0 / 0
Обращение к категории в xsl
    #38260897
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А я даже не допиливатель, но мне уже очевидно.

Код: xml
1.
<add key="Type" value="ice" />
...
Рейтинг: 0 / 0
Обращение к категории в xsl
    #38260899
t1mon1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Antonariy,

http://test.projectmate.ru/rss.ivp

посмотрите что происходит
...
Рейтинг: 0 / 0
Обращение к категории в xsl
    #38260913
t1mon1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мне надо както выводить type_alias="ice"
...
Рейтинг: 0 / 0
Обращение к категории в xsl
    #38260916
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тогда key="type_alias", а не Type.
...
Рейтинг: 0 / 0
Обращение к категории в xsl
    #38260930
t1mon1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Antonariy,

Теперь шляпы и дна нету в ррс. без

Код: xml
1.
<add key="RSS" value="true" />



Ставлю её поверх Ваших подсказок. Нечего не фельтруется
...
Рейтинг: 0 / 0
Обращение к категории в xsl
    #38260938
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня больше нет идей. Проблема лежит за рамками XML, XSL, XPath, XQuery.
...
Рейтинг: 0 / 0
Обращение к категории в xsl
    #38260939
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Но напоследок хотелось бы взглянуть на полный текст документа запроса.
...
Рейтинг: 0 / 0
25 сообщений из 28, страница 1 из 2
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Обращение к категории в xsl
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]