powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / XPath помогите сделать сортировку
14 сообщений из 14, страница 1 из 1
XPath помогите сделать сортировку
    #32046194
soni
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Выборку данных из БД делает, а сортировку не зяню как :(
...
Рейтинг: 0 / 0
XPath помогите сделать сортировку
    #32046204
Max_rv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А парсер какой?
Сортировка поддерживается специфическими (не соответствующими стандарту) функциями MSXSL 2.0
И вообще опишите задачу конткретнее, может проще без Xpath обойтись?
...
Рейтинг: 0 / 0
XPath помогите сделать сортировку
    #32046226
soni
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да наверное!
Я формирую запрос с помощью XPath.
А потом в уже готовой выборке необходимо менять сортировку: по 1столбцу, по второму и т.д.

Как я себе это вижу: щелкать по наименованию столбца по которому необходимо отсортировать........
...
Рейтинг: 0 / 0
XPath помогите сделать сортировку
    #32046234
Фотография Shura_M
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В xsl есть сортировка, в xpath кажется нету ..
{src}
<xsl:apply-templates>
<xsl:sort select="sort-field"/>
</xsl:apply-templates>
{/src}
...
Рейтинг: 0 / 0
XPath помогите сделать сортировку
    #32046235
Makc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вопросы:
Клиент какой?
Видимо браузер (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 - пройдет немало времени...
...
Рейтинг: 0 / 0
XPath помогите сделать сортировку
    #32046251
soni
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ура заработало! Это просто страничка загружалась из кеша! :-E

Я это сделал с помощью <xsl:sort>

Вопрос к Makc:
лучше asp файл написать, оттуда xml и вытаскивать...

В смысле тот кусок xsl файла где находится <xsl:sort> генерировать с пощью скрипта?
Или как ?
...
Рейтинг: 0 / 0
XPath помогите сделать сортировку
    #32046252
soni
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
<?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>
...
Рейтинг: 0 / 0
XPath помогите сделать сортировку
    #32046260
Makc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
XPath помогите сделать сортировку -> Выборку данных из БД делает, а сортировку не зяню как :(

Я не понял как данные вытаскиваешь из БД с помощью
URL queries или через Recordset, рекомендую второй способ..
Все мною сказанное относится к этому вопросу.

Если ты хочешь по щелчку на колонке сортировать данные то скрипт на клиенте все равно придется писать и передавать в xsl параметры (либо номер колонки либо значение параметра сортировки)..
Но это тема отдельного топика, вопрос конформного отображения XML -> HTML не вызывает вопросов, а вот обратно, у меня с этим проблемы были
...
Рейтинг: 0 / 0
XPath помогите сделать сортировку
    #32046264
soni
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Существует три файла:
1.xml - XPath query
2.xsl - шаблон отображения листинг я показал
3.xdr - схема

Вот, а вопрос в том как мне сделать процесс сортировки интерактивным, т.е. например, щелкая по первой колонке данные будут сортироваться по первой колонке ......

И соответственно вопрос:
что означает order="one" в следующем выражении:
<ElementType name="author" content="eltOnly" order="one">
...
Рейтинг: 0 / 0
XPath помогите сделать сортировку
    #32046275
Makc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Немного оффтопик, ну ладно:
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 - модно, круто, но нужен ли тебе ЭТОТ геморр?
...
Рейтинг: 0 / 0
XPath помогите сделать сортировку
    #32046284
soni
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Так чета я совсем ничего не понимаю, насколько я понял, то XML это не только круто, но и более производительней(сюдя по его описанию в инете). Только вот я это еще не понял :(

Я себе представлял так: выборка производится только один раз(первый), а все остальные манипуляции производятся над уже полученными данными с сервера! Т.е. и сортировку я думал делать именно по этому принципу.

Я вынашу это в новый топик.
...
Рейтинг: 0 / 0
XPath помогите сделать сортировку
    #32046289
Makc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По производительности не факт..
По удобству работы согласен.
Весь вопрос в том, на каком уровне с ним работать.
Xpath query в xml файл - ограниченно не передашь параметры на фильтрацию...
Представь таблица 1000000 записей, твой Xpath query выдернет их все (причем клиенту), и твой XSL только при получении построит дерево и отфильтрует по нужным параметрам, результата ты можешь не дождаться :)
Писать Xpath query в xml файл для каждого условия where - тот еще геморр.
Проще написать asp файл, в него закидывать параметры, динамически составлять sql запрос, испольнять и выдавать данные клиенту...
Смысл моего трепа такой:
sql запрос составляешь динамически, и результат исполнения выводишь как xml а на клиенте че хошь, то и делаешь.
НО, чтоб это сделать тебе как-то нужно сопоставить xml и html, т.е по клику на колонку найти XML элемент для которого он произошел, перепарсить элемент и вывести его заново.
Инструменты: id, ссылки на функции в xsl файле,
...
Рейтинг: 0 / 0
XPath помогите сделать сортировку
    #32046537
soni
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ага заработала!!!!!!!!
Я использовал инструмент
<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>
Удачи! :))))
...
Рейтинг: 0 / 0
XPath помогите сделать сортировку
    #32046578
Фотография Maxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тоже както с етим имел дело - запарился,но div в table вставить не удалось:((
Но мне XML нравиться.
ЗЫ
Сразу вопрос может кто решал его?
Есть asp,к которой прикручен PWCPivotTable - выбираю данные ,генерю xml(правильный проверенно) но загнать его в
PTable.ConnectionString = "provider=mspersist"
PTable.CommandText = ".xml"
никак не удается,причем если тоже сделать на простой html страничке - все О.К.
Как я только не изворачивался - толку 0.Может кому ето удалось иммено из под asp-поделитесь опытом плз
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / XPath помогите сделать сортировку
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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