мотивация:
Функция запроса — это наиболее распространенный и часто используемый функциональный модуль, который мы видели на веб-сайте. Раньше информационные запросы были подключены к базе данных, и каждый клик требовал поддержки внутренней базы данных. Однако во многих случаях пользователи часто оперируют только определенной частью данных, что не только увеличивает нагрузку на сервер, но и серьезно влияет на скорость просмотра пользователя.
В этом случае нам необходимо передать клиенту определенную часть данных, которые нужны пользователю, в виде XML, чтобы пользователь мог легко оперировать этими данными. Это не только облегчает работу пользователей, но и снижает нагрузку на базу данных сервера. Почему нет! Эту функцию можно применить ко многим другим модулям, поэтому была добавлена функция динамического запроса.
Материал:
Динамический запрос к тому XML состоит из двух файлов: search.xml и search.xsl.
Функции:
Фильтруйте данные без обновления страницы, эффективно улучшая функцию запроса данных.
Эффект:
Просмотреть здесь
Код:
поиск.xml
<?xml version="1.0"coding="gb2312" ?>
<?xml-stylesheet type="text/xsl" href="search.xsl" ?>
<СиняяИдея>
<команда>
<blue_ID>1</blue_ID>
<blue_name>Парусный полет</blue_name>
<blue_text>Простой запрос</blue_text>
<blue_time>11 января 2002 17:35:33</blue_time>
<blue_class>Тема XML</blue_class>
</команда>
<команда>
<blue_ID>2</blue_ID>
<blue_name>летящая птица</blue_name>
<blue_text>Женитьба на тебе причинит тебе боль</blue_text>
<blue_time>06.09.2001 12:45:51</blue_time>
<blue_class>Эссенция ирригации</blue_class>
</команда>
<команда>
<blue_ID>3</blue_ID>
<blue_name>Као Цзы</blue_name>
<blue_text>Применение регулярных выражений на форуме UBB</blue_text>
<blue_time>23.11.2001 21:02:16</blue_time>
<blue_class>Сущность веб-программирования</blue_class>
</команда>
<команда>
<blue_ID>4</blue_ID>
<blue_name>Тайиланг</blue_name>
<blue_text>Полное руководство для классической группы управления на конец года, версия 0.1</blue_text>
<blue_time>08.12.2000 10:22:48</blue_time>
<blue_class>Ирригационная зона форума</blue_class>
</команда>
<команда>
<blue_ID>5</blue_ID>
<blue_name>ммкк</blue_name>
<blue_text>Сводка сообщений об ошибках Asp</blue_text>
<blue_time>13 октября 2001 г. 16:39:05</blue_time>
<blue_class>Javascript</blue_class>
</команда>
</BlueIdea>
поиск.xsl
<?xml version="1.0"coding="gb2312" ?>
<xsl:stylesheet xmlns:xsl=" http://www.w3.org/TR/WD-xsl ">
<xsl:template match="/">
<html>
<голова>
<title>Практические советы по XML (2): динамический запрос</title>
<стиль>
body,BlueIdea,team,blue_ID,blue_name,blue_text,blue_time,blue_class{шрифт: 12 пикселей «宋体», «Arial», «Times New Roman» };
таблица {размер шрифта: 12 пикселей; граница: 0 пикселей двойной; цвет границы: # 99CC99 # 99CC99 #CCCCCC #CCCCCC;
диапазон {размер шрифта: 12 пикселей; цвет: красный};
</стиль>
<скрипт>
функция searchtext(x)
{
таблица стилей = document.XSLDocument;
источник = документ.XMLDocument;
sortField=document.XSLDocument.selectNodes(" //@select ");
если (х!="")
{
sortField[1].value="team[blue_ID=""+x+"']";
Layer1.innerHTML=source.documentElement.transformNode(таблица стилей);
}
else {alert("Пожалуйста, введите критерии фильтра!");}
}
</скрипт>
</голова>
<тело>
<p align="center"><span>Практические советы по объемам XML (2): динамический запрос</span></p>
<div id="Layer1" name="Layer1">
<xsl:apply-templates select="BlueIdea" />
</div>
<hr size="1" ширина="500" />
<table align="center" cellpadding="0" cellpacing="0" border="0" >
<тр>
<тд>
<span>Пожалуйста, введите критерии фильтра: </span>
blue_ID= <input type="text" name="searchtext" size="1" maxlength="1" />
<input type="button" class="button" onClick="searchtext(document.all.searchtext.value)" value="Search" name="button" />
</td>
</tr>
</таблица>
</тело>
</html>
</xsl:шаблон>
<xsl:template match="BlueIdea">
<table width="500" border="1" align="center" cellpadding="1" cellpacing="1" bordercolordark="#ffffff" bordercolorlight="#ADAAAD">
<tr bgcolor="#FFCC99" align="center">
<td>Число</td>
<td>Имя</td>
<td>Тема</td>
<td>Время публикации</td>
<td>Классификация</td>
</tr>
<xsl:apply-templates select="team" order-by="blue_ID"/>
</таблица>
</xsl:шаблон>
<xsl:template match="команда">
<tr align="center">
<xsl:apply-templates select="blue_ID" />
<xsl:apply-templates select="blue_name" />
<xsl:apply-templates select="blue_text" />
<xsl:apply-templates select="blue_time" />
<xsl:apply-templates select="blue_class" />
</tr>
</xsl:шаблон>
<xsl:template match="blue_ID">
<td bgcolor="#eeeeee">
<xsl:значение />
</td>
</xsl:шаблон>
<xsl:template match="blue_name">
<тд>
<xsl:значение />
</td>
</xsl:шаблон>
<xsl:template match="blue_text">
<тд>
<xsl:значение />
</td>
</xsl:шаблон>
<xsl:template match="blue_time">
<тд>
<xsl:значение />
</td>
</xsl:шаблон>
<xsl:template match="blue_class">
<тд>
<xsl:значение />
</td>
</xsl:шаблон>
</xsl:таблица стилей>
объяснять:
1) search.xml — это файл данных, думаю, проблем у всех не возникнет.
2) search.xsl — это файл формата, есть несколько вещей, на которые следует обратить внимание.
(1) В сценарии:
sortField=document.XSLDocument.selectNodes(" //@select ");
Функция: найти все узлы с выбранным атрибутом. Это то, что я сказал в динамической сортировке
sortField=document.XSLDocument.selectSingleNode(" //@order-by ");
Что-то другое. Пожалуйста, обратите внимание на эту небольшую разницу и соответствующие функции.
sortField[1].value="team[blue_ID=""+x+"']";
Следовательно, sortField[1] — это второй найденный узел, а соответствующий ему узел —
<xsl:apply-templates select="team" order-by="blue_ID"/>
Параметр x — это значение, введенное в текстовое поле.
Мы изменили условие поиска select="team" на select="team[blue_ID='x']"
Функция заключается в добавлении условия оценки, и будут отображаться только те XML-данные, значение blue_ID которых равно x.
Конечно, вы можете обогатить условия для суждения. Простое суждение, которое я здесь выношу, призвано облегчить понимание каждому.
Наконец, новое отсортированное содержимое отображается путем повторного отображения значенияinnerHTML Layer1.
(2) В тексте:
select="team"
В моем случае это sortField[1], но это может измениться по ходу дела.
Тогда вы должны точно рассчитать и не допустить ошибок, иначе вы найдете другую компанию!
Я предлагаю часто используемый метод: в коде вы можете использовать цикл, чтобы определить, тот ли это узел вам нужен.
Еще одна вещь:
XML имеет чрезвычайно строгие требования к регистру. Так что если ваше письмо не стандартизировано, оно простудится!
постскриптум:
После того, как все ознакомятся с идеей выполнения динамической сортировки и динамического запроса, вы обнаружите, что наш метод реализации на самом деле очень прост.
Просто измените определенное значение, а затем отобразите его снова.
В функции динамического подкачки мы по-прежнему следуем этой идее.