|
|
|
XPath помогите сделать сортировку
|
|||
|---|---|---|---|
|
#18+
Выборку данных из БД делает, а сортировку не зяню как :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2002, 14:24:59 |
|
||
|
XPath помогите сделать сортировку
|
|||
|---|---|---|---|
|
#18+
А парсер какой? Сортировка поддерживается специфическими (не соответствующими стандарту) функциями MSXSL 2.0 И вообще опишите задачу конткретнее, может проще без Xpath обойтись? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2002, 14:51:56 |
|
||
|
XPath помогите сделать сортировку
|
|||
|---|---|---|---|
|
#18+
Да наверное! Я формирую запрос с помощью XPath. А потом в уже готовой выборке необходимо менять сортировку: по 1столбцу, по второму и т.д. Как я себе это вижу: щелкать по наименованию столбца по которому необходимо отсортировать........ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2002, 15:19:38 |
|
||
|
XPath помогите сделать сортировку
|
|||
|---|---|---|---|
|
#18+
В xsl есть сортировка, в xpath кажется нету .. {src} <xsl:apply-templates> <xsl:sort select="sort-field"/> </xsl:apply-templates> {/src} ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2002, 15:32:06 |
|
||
|
XPath помогите сделать сортировку
|
|||
|---|---|---|---|
|
#18+
Вопросы: Клиент какой? Видимо браузер (IE), потому-что иначе проще sql обойтись.. Если браузер, то трансформация в HTML скриптом или XSL файлом? Если скриптом, то надо в объектной модели XMLDOM смотреть... Если XSL файлом, то : <xsl:sort select = string-expression data-type = { "text" | "number" | Qname } order = { "ascending" | "descending" } lang = { nmtoken } case-order = { "upper-first" | "lower-first" } /> в template списка ПОСЛЕ добавления элементов списка... Вообще XPATH использовать для выборки данных использовать не советую, лучше asp файл написать, оттуда xml и вытаскивать... Ограничения на значения узлов XPATH не влияют на sql запрос для вытаскивания данных, т.е. если у тебя ограничение допустим /City[@Name='Москва'] то у тебя сначала вытащаться данные по всем городам, только потом Xpath отфильтрует по Москве. В случае с большим количеством записей это большая потеря производительности... Тем более что разбор дерева сама по себе небыстрая операция. А если трансформация на клиенте (в браузере), то так делать вообще нельзя, потому что пока (тем более если висит на модеме) клиент получит 10000 записей и только потом отфильтрует нужные 5 - пройдет немало времени... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2002, 15:35:52 |
|
||
|
XPath помогите сделать сортировку
|
|||
|---|---|---|---|
|
#18+
Ура заработало! Это просто страничка загружалась из кеша! :-E Я это сделал с помощью <xsl:sort> Вопрос к Makc: лучше asp файл написать, оттуда xml и вытаскивать... В смысле тот кусок xsl файла где находится <xsl:sort> генерировать с пощью скрипта? Или как ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2002, 15:53:23 |
|
||
|
XPath помогите сделать сортировку
|
|||
|---|---|---|---|
|
#18+
<?xml version='1.0' encoding='windows-1251'?> <xsl:stylesheet xmlns:xsl='http://www.w3.org/1999/XSL/Transform' version='1.0'> <xsl:output media-type="text/html" type="text" encoding='windows-1251'/> <xsl:template match='*'> <!--Вот этот кусочек --> <xsl:apply-templates> <xsl:sort select="@NameVes"/> </xsl:apply-templates> </xsl:template> <xsl:template match='Vessel'> <tr> <xsl:if test="position() mod 2 = 0"> <xsl:attribute name="bgcolor">yellow</xsl:attribute> </xsl:if> <td><xsl:value-of select='@NameVes' /></td> <td><xsl:value-of select='@LMaxVes' /></td> </tr> </xsl:template> <xsl:template match='/'> <html> <body> <table border='1'> <tr> <th colspan='4'>Vessel</th> </tr> <xsl:apply-templates select='ROOT'/> </table> </body> </html> </xsl:template> </xsl:stylesheet> ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2002, 15:56:34 |
|
||
|
XPath помогите сделать сортировку
|
|||
|---|---|---|---|
|
#18+
XPath помогите сделать сортировку -> Выборку данных из БД делает, а сортировку не зяню как :( Я не понял как данные вытаскиваешь из БД с помощью URL queries или через Recordset, рекомендую второй способ.. Все мною сказанное относится к этому вопросу. Если ты хочешь по щелчку на колонке сортировать данные то скрипт на клиенте все равно придется писать и передавать в xsl параметры (либо номер колонки либо значение параметра сортировки).. Но это тема отдельного топика, вопрос конформного отображения XML -> HTML не вызывает вопросов, а вот обратно, у меня с этим проблемы были ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2002, 16:08:43 |
|
||
|
XPath помогите сделать сортировку
|
|||
|---|---|---|---|
|
#18+
Существует три файла: 1.xml - XPath query 2.xsl - шаблон отображения листинг я показал 3.xdr - схема Вот, а вопрос в том как мне сделать процесс сортировки интерактивным, т.е. например, щелкая по первой колонке данные будут сортироваться по первой колонке ...... И соответственно вопрос: что означает order="one" в следующем выражении: <ElementType name="author" content="eltOnly" order="one"> ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2002, 16:22:26 |
|
||
|
XPath помогите сделать сортировку
|
|||
|---|---|---|---|
|
#18+
Немного оффтопик, ну ладно: order="one" означает что дочерние элементы могут содержаться токо один раз т.е. <ElementType name="author" content="eltOnly" order="one"> <element name="Books" minOccurs="1"> </ElementType> - верно, а <ElementType name="author" content="eltOnly" order="one"> <element name="Book" maxOccurs="*"> </ElementType> - неправильно... По вопросу интерактивности: без перегрузки страницы: пишешь скрипт на JS там берешь объекты - xsl-документ, полученный контент xml, трансформируешь часть xml (содержащую собственно данные таблицы), с помощью xsl с передачей параметра сортировки, выводишь результат в документ (в через InnerHTML) либо таблицы либо ее контэйнера.... На сервере : Смысла нет Проще через sql с передачей параметра сортировки без всякого Xpath. Я понимаю, XSL - модно, круто, но нужен ли тебе ЭТОТ геморр? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2002, 16:51:16 |
|
||
|
XPath помогите сделать сортировку
|
|||
|---|---|---|---|
|
#18+
Так чета я совсем ничего не понимаю, насколько я понял, то XML это не только круто, но и более производительней(сюдя по его описанию в инете). Только вот я это еще не понял :( Я себе представлял так: выборка производится только один раз(первый), а все остальные манипуляции производятся над уже полученными данными с сервера! Т.е. и сортировку я думал делать именно по этому принципу. Я вынашу это в новый топик. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2002, 17:05:19 |
|
||
|
XPath помогите сделать сортировку
|
|||
|---|---|---|---|
|
#18+
По производительности не факт.. По удобству работы согласен. Весь вопрос в том, на каком уровне с ним работать. Xpath query в xml файл - ограниченно не передашь параметры на фильтрацию... Представь таблица 1000000 записей, твой Xpath query выдернет их все (причем клиенту), и твой XSL только при получении построит дерево и отфильтрует по нужным параметрам, результата ты можешь не дождаться :) Писать Xpath query в xml файл для каждого условия where - тот еще геморр. Проще написать asp файл, в него закидывать параметры, динамически составлять sql запрос, испольнять и выдавать данные клиенту... Смысл моего трепа такой: sql запрос составляешь динамически, и результат исполнения выводишь как xml а на клиенте че хошь, то и делаешь. НО, чтоб это сделать тебе как-то нужно сопоставить xml и html, т.е по клику на колонку найти XML элемент для которого он произошел, перепарсить элемент и вывести его заново. Инструменты: id, ссылки на функции в xsl файле, ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2002, 17:24:26 |
|
||
|
XPath помогите сделать сортировку
|
|||
|---|---|---|---|
|
#18+
Ага заработала!!!!!!!! Я использовал инструмент <div id= "listing"></div> Только этот инструмент не работает внутри таблицы :( т.е. мне пришлось поступить следующим образом: <xsl:template match='/'> <html> <head> <SCRIPT><xsl:comment><![CDATA[ var sortField = null; var source = null; var stylesheet = null; Непосредственно функция сортировки function sort(field, fieldType) { if (sortField) { sortField.value="@"+field; sortFieldType.value=fieldType; window.document.all.listing.innerHTML = source.documentElement.transformNode(stylesheet); }; return false; }; function loader() { stylesheet = document.XSLDocument; source = document.XMLDocument; sortField = stylesheet.selectSingleNode("/xsl:stylesheet/xsl:template/table/xsl:apply-templates/xsl:sort/@select"); sortFieldType = stylesheet.selectSingleNode("/xsl:stylesheet/xsl:template/table/xsl:apply-templates/xsl:sort/@data-type"); }; ]]></xsl:comment></SCRIPT> <body onLoad="loader()"> <div id= "listing"> <xsl:apply-templates select="*"/> </div> </body> </html> </xsl:template> <xsl:template match="/*"> <table border='1'> <thead> <tr> <th> <a href="#" onclick="return sort('NameVes', 'text')">Name </a> </th> <th> <a href="#" onclick="return sort('LMaxVes', 'number')">Lenght </a> </th> </tr> </thead> Если сюда вставить тег <div id= "listing">..... оно работать не будет ! :( А почему незяню, поэтому и пришлось делать так сложно. Если кто сталкивался, подскажите. <xsl:apply-templates select="Vessel"> <xsl:sort select="@LMaxVes" data-type="number"/> </xsl:apply-templates> </table> </xsl:template> <xsl:template match="/*/Vessel"> <tr> <td><xsl:value-of select='@NameVes' /></td> <td><xsl:value-of select='@LMaxVes' /></td> </tr> </xsl:template> Удачи! :)))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2002, 14:47:10 |
|
||
|
XPath помогите сделать сортировку
|
|||
|---|---|---|---|
|
#18+
Тоже както с етим имел дело - запарился,но div в table вставить не удалось:(( Но мне XML нравиться. ЗЫ Сразу вопрос может кто решал его? Есть asp,к которой прикручен PWCPivotTable - выбираю данные ,генерю xml(правильный проверенно) но загнать его в PTable.ConnectionString = "provider=mspersist" PTable.CommandText = ".xml" никак не удается,причем если тоже сделать на простой html страничке - все О.К. Как я только не изворачивался - толку 0.Может кому ето удалось иммено из под asp-поделитесь опытом плз ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2002, 16:13:38 |
|
||
|
|

start [/forum/topic.php?fid=46&fpage=3426&tid=1820773]: |
0ms |
get settings: |
5ms |
get forum list: |
10ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
59ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
| others: | 195ms |
| total: | 334ms |

| 0 / 0 |
