| 
| Sail |  
| stranger |  
|  |  
|  |  
| 
 |  
| Рег.:  11.11.2003 |  
| Сообщений: 19 |  
|  |  
| Рейтинг: 0 |  | 
|  Re: Вычисления в XML документах
 
 [re: Serge] 13.11.2003 01:14
 |  |  | 
| 
| PivotTable - это уже нечистые эелектронные таблицы (точнее вообще не электронные таблицы). Это скорее клиентский компонет для OLAP. Причем достаточно ограничен по возможностям. По-моему, предложенный способ более мощный из-за возможностей XPath. Хотя конечно же, этот способ не противопоставляется клиентам OLAP, он скорее позицианируется для сбора отчетности.
 
 
 |  | 
| 
| Sail |  
| stranger |  
|  |  
|  |  
| 
 |  
| Рег.:  11.11.2003 |  
| Сообщений: 19 |  
|  |  
| Рейтинг: 0 |  | 
|  Re: Вычисления в XML документах
 
 [re: DarkGray] 13.11.2003 22:06
 |  |  | 
| 
| Что касается 'констант' ../, я над этим сам думал. Если их попытаться устранить, т.е. текущий контекст отсчитывать от родителя, то, например, теряется информация о том, в каком именно атрибуте находится вычисляемое выражение. Например, если требуется поместить итоговую сумму в атрибут родительского элемента, и имя этого атрибута такое же как у дочерних элементов
 <item a1="{sum(../*/@*[name()=name(current())])}">
 <item a1="7" a2="9"/>
 </item>
 Можно сделать соответствующую опцию в обработчике. Можно так же разделить текущий контекст для текстовых узлов и для значений атрибутов.
 
 
 |  | 
| 
| Sail |  
| stranger |  
|  |  
|  |  
| 
 |  
| Рег.:  11.11.2003 |  
| Сообщений: 19 |  
|  |  
| Рейтинг: 0 |  | 
|  Re: Вычисления в XML документах
 
 [re: Sail] 28.11.2003 22:46
 |  |  | 
|  | 
| 
| DarkGray |  
| Carpal Tunnel |  
|  |  
|  |  
|   
 |  
| Рег.:  30.09.2002 |  
| Сообщений: 31404 |  
|  |  
| Рейтинг: 8950 |  | 
|  Re: Вычисления в XML документах
 
 [re: Sail] 28.11.2003 23:00
 |  |  | 
| 
| Также очень удобно применять xsl не к xml-у, а к реальной программе. Т.е. программа реализует IXPathNavigator на основе своих данных (объекты, свойства), далее применяем к IXPathNavigator-у xsl-преобразование, на выходе получаем обработанные данные, которые опять можно превратить в реальные объекты.
 
 
 |  | 
| 
| Sail |  
| stranger |  
|  |  
|  |  
| 
 |  
| Рег.:  11.11.2003 |  
| Сообщений: 19 |  
|  |  
| Рейтинг: 0 |  | 
|  Re: Вычисления в XML документах
 
 [re: DarkGray] 29.11.2003 00:08
 |  |  | 
| 
| На сколько я понял, класс XPathNavigator  читает данные из XML-хранилища (store). Почему ты пишешь
 
 В ответ на:
 
 не к xml-у
 
 
 
 
 ?
 Ты имел ввиду XSLT, используемые в моем подходе?
 
 P.S. Выражайся точнее, интерфейсы реализуют классы, а не программы, т.е. не очень понятно слово 'объекты' в скобочках.
 
 
 |  | 
| 
| DarkGray |  
| Carpal Tunnel |  
|  |  
|  |  
|   
 |  
| Рег.:  30.09.2002 |  
| Сообщений: 31404 |  
|  |  
| Рейтинг: 8950 |  | 
|  Re: Вычисления в XML документах
 
 [re: Sail] 29.11.2003 00:54
 |  |  | 
| 
| > класс XPathNavigator читает данные из XML-хранилища (store).
 
 Так вот можно как раз сделать, чтобы XPathNavigator бегал не по xml-хранилищу, а по реальным объектам.
 
 Допустим у нас такие классы в программе:
 
 code:
 class Data
 {
 public Customer[] Customer {get;}
 }
 class Customer
 {
 public Order[] Orders {get;}
 public string Name {get;}
 }
 class Order
 {
 public double Price {get;}
 public DateTime Time {get;}
 }
 
 
 тогда мы можешь реализовать IXPathNavigator, который будет бегать по этим объектам, и эмулировать следующий xml-представление:
 
 code:
 <Data>
 <Customer name="qq">
 <Order Time="20.11.03" Price="100" ></Order>
 <Order Time="23.11.03" Price="150" ></Order>
 <Customer>
 <Customer name="qq2">
 <Order Time="20.11.03" Price="100" ></Order>
 <Order Time="23.11.03" Price="150" ></Order>
 <Customer>
 </Data>
 
 
 
 Далее к этому IXPathNavigator-у легко можно применить твое xslt-преобразование.
 
 
 > Выражайся точнее
 
 Дык, более разжеванная идея - требует больше времени.
 
 
 
 
 Редактировал DarkGray (29.11.2003 01:14)
 |  | 
| 
| Sail |  
| stranger |  
|  |  
|  |  
| 
 |  
| Рег.:  11.11.2003 |  
| Сообщений: 19 |  
|  |  
| Рейтинг: 0 |  | 
|  Re: Вычисления в XML документах
 
 [re: DarkGray] 29.11.2003 01:12
 |  |  | 
| 
| свойство
 >public string Name {get;}
 в классе Customer, да?
 
 
 
 |  | 
| 
| DarkGray |  
| Carpal Tunnel |  
|  |  
|  |  
|   
 |  
| Рег.:  30.09.2002 |  
| Сообщений: 31404 |  
|  |  
| Рейтинг: 8950 |  | 
|  Re: Вычисления в XML документах
 
 [re: Sail] 29.11.2003 01:14
 |  |  | 
| 
| да.  извини, ошибся. Исправил.
 
 
 |  | 
| 
| Sail |  
| stranger |  
|  |  
|  |  
| 
 |  
| Рег.:  11.11.2003 |  
| Сообщений: 19 |  
|  |  
| Рейтинг: 0 |  | 
|  Re: Вычисления в XML документах
 
 [re: DarkGray] 29.11.2003 01:19
 |  |  | 
| 
| это реально используется?
 
 
 |  | 
| 
| DarkGray |  
| Carpal Tunnel |  
|  |  
|  |  
|   
 |  
| Рег.:  30.09.2002 |  
| Сообщений: 31404 |  
|  |  
| Рейтинг: 8950 |  | 
|  Re: Вычисления в XML документах
 
 [re: Sail] 29.11.2003 01:22
 |  |  | 
| 
| У нас пока нет.
 
 ps
 Но кто-то как раз на днях говорил, что у них в проге (что-то из разряда склад-учет) реализован в том числе доступ через IXPathNavigator.
 
 
 |  | 
| 
| Sail |  
| stranger |  
|  |  
|  |  
| 
 |  
| Рег.:  11.11.2003 |  
| Сообщений: 19 |  
|  |  
| Рейтинг: 0 |  | 
|  Re: Вычисления в XML документах
 
 [re: DarkGray] 29.11.2003 01:28
 |  |  | 
| 
| Вообще, интересно надо над этим подумать.
 А пока не подумал
  , вот такой вопрос: в чем приемущество XSLT здесь? зачем его здесь использовать? 
 
 |  | 
| 
| DarkGray |  
| Carpal Tunnel |  
|  |  
|  |  
|   
 |  
| Рег.:  30.09.2002 |  
| Сообщений: 31404 |  
|  |  
| Рейтинг: 8950 |  | 
|  Re: Вычисления в XML документах
 
 [re: Sail] 29.11.2003 01:37
 |  |  | 
| 
| В первую очередь - упрощается разработка отчетов, упрощается просмотр внутреннего состояния программы и т.д.
 
 ps.
 Если сделать свой не только IXPathNavigator, но и IXmlWriter - то можно использовать xsl и для преобразования объектов. Особенно может это пригодится в задачах со сложной структурой данных, и при этом где нет особых затыков по производительности.
 
 
 |  |