Heim > Backend-Entwicklung > XML/RSS-Tutorial > Praktische Tipps zum XML-Volume (2): Dynamische Abfrage

Praktische Tipps zum XML-Volume (2): Dynamische Abfrage

黄舟
Freigeben: 2017-02-10 16:11:53
Original
1736 Leute haben es durchsucht

Motivation:
Die Abfragefunktion ist das häufigste und am häufigsten verwendete Funktionsmodul, das wir auf der Website gesehen haben. In der Vergangenheit waren Informationsabfragen mit der Datenbank verbunden und jeder Klick erforderte die Unterstützung der Backend-Datenbank. In vielen Fällen verarbeiten Benutzer jedoch häufig nur einen bestimmten Teil der Daten, was nicht nur die Belastung des Servers erhöht, sondern auch die Browsing-Geschwindigkeit des Benutzers erheblich beeinträchtigt.

In diesem Fall müssen wir einen bestimmten Teil der Daten, die der Benutzer benötigt, in Form von XML an den Client übergeben, damit der Benutzer diese Daten problemlos bearbeiten kann. Dies erleichtert nicht nur den Benutzern, sondern verringert auch die Belastung der Serverdatenbank. Warum nicht! Und diese Funktion kann auf viele andere Module angewendet werden, daher wurde diese dynamische Abfragefunktion hinzugefügt.

Material:
Dynamische Abfrage des XML-Volumens
Es gibt 2 Dateien: search.xml und search.xsl

Funktion:
Abfrage ohne Aktualisierung der Seite Die Daten sind gefiltert und gefiltert, um die Datenabfragefunktion effektiv zu verbessern.
Effekt:
Hier durchsuchen
Code:
search.xml

<?xml version="1.0" encoding="gb2312" ?>
<?xml-stylesheet type="text/xsl" href="search.xsl" ?>
<BlueIdea>
  <team>
    <blue_ID>1</blue_ID>
    <blue_name>Sailflying</blue_name>
    <blue_text>一个简单的查询</blue_text>
    <blue_time>2002-1-11 17:35:33</blue_time>
    <blue_class>XML专题</blue_class>
  </team>
  <team>
    <blue_ID>2</blue_ID>
    <blue_name>flyingbird</blue_name>
    <blue_text>嫁给你,是要你疼的</blue_text>
    <blue_time>2001-09-06 12:45:51</blue_time>
    <blue_class>灌水精华</blue_class>
  </team>
  <team>
    <blue_ID>3</blue_ID>
    <blue_name>苛子</blue_name>
    <blue_text>正则表达式在UBB论坛中的应用</blue_text>
    <blue_time>2001-11-23 21:02:16</blue_time>
    <blue_class>Web 编程精华</blue_class>
  </team>
  <team>
    <blue_ID>4</blue_ID>
    <blue_name>太乙郎</blue_name>
    <blue_text>年末经典分舵聚会完全手册 v0.1</blue_text>
    <blue_time>2000-12-08 10:22:48</blue_time>
    <blue_class>论坛灌水区</blue_class>
  </team>
  <team>
    <blue_ID>5</blue_ID>
    <blue_name>mmkk</blue_name>
    <blue_text>Asp错误信息总汇</blue_text>
    <blue_time>2001-10-13 16:39:05</blue_time>
    <blue_class>javascript脚本</blue_class>
  </team>
</BlueIdea>
Nach dem Login kopieren


search.xsl

<?xml version="1.0" encoding="gb2312" ?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<xsl:template match="/">
<html>
<head>
<title> XML卷之实战锦囊(2):动态查询</title>
<style>
body,BlueIdea,team,blue_ID,blue_name,blue_text,blue_time,blue_class{ font: 12px "宋体", "Arial", "Times New Roman"; } 
table { font-size: 12px; border: 0px double; 
border-color: #99CC99 #99CC99 #CCCCCC #CCCCCC; 
cellpadding:3;cellspacing:3; 
bgcolor:#eeeeee; 
text-decoration: blink} 
span { font-size: 12px; color: red; }
</style>
<script>
function searchtext(x) 
{
stylesheet=document.XSLDocument;
source=document.XMLDocument;
sortField=document.XSLDocument.selectNodes("//@select");
if (x!="")
{
sortField[1].value="team[blue_ID=&#39;"+x+"&#39;]";
Layer1.innerHTML=source.documentElement.transformNode(stylesheet);
}
else {alert("请输入筛选条件!");} 
}
</script>
</head>
<body>
<p align="center"><span>XML卷之实战锦囊(2):动态查询</span></p>
<p id="Layer1" name="Layer1">
<xsl:apply-templates select="BlueIdea" />
</p>
<hr size="1" width="500" />
<table align="center" cellpadding="0" cellspacing="0" border="0" >
<tr>
<td>
<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>
</table>
</body>
</html>
</xsl:template>
<xsl:template match="BlueIdea">
<table width="500" border="1" align="center" cellpadding="1" cellspacing="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"/>
</table>
</xsl:template>
<xsl:template match="team">
<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:template>
<xsl:template match="blue_ID">
<td bgcolor="#eeeeee">
<xsl:value-of />
</td>
</xsl:template>
<xsl:template match="blue_name">
<td>
<xsl:value-of />
</td>
</xsl:template>
<xsl:template match="blue_text">
<td>
<xsl:value-of />
</td>
</xsl:template>
<xsl:template match="blue_time">
<td>
<xsl:value-of />
</td>
</xsl:template>
<xsl:template match="blue_class">
<td>
<xsl:value-of />
</td>
</xsl:template>
</xsl:stylesheet>
Nach dem Login kopieren


Erklärung:
1) search.xml ist eine Datendatei, ich glaube, dass jeder kein Problem haben wird.
2) search.xsl ist eine Formatdatei, es gibt mehrere Dinge zu beachten.
(1) Im Skript:

sortField=document.XSLDocument.selectNodes("//@select");
Nach dem Login kopieren

wird verwendet, um alle Knoten mit dem Attribut „select“ zu finden. Dies unterscheidet sich etwas von dem

sortField=document.XSLDocument.selectSingleNode("//@order-by");
Nach dem Login kopieren

, das ich bei der dynamischen Sortierung erwähnt habe. Bitte beachten Sie diesen kleinen Unterschied und ihre jeweiligen Funktionen.


sortField[1].value="team[blue_ID=&#39;"+x+"&#39;]";
Nach dem Login kopieren

SortField[1] ist also der zweite gefundene Knoten, und der entsprechende Knoten ist

<xsl:apply-templates select="team" order-by="blue_ID"/>
Nach dem Login kopieren

Parameter x ist der im Textfeld eingegebene Wert.
Wir haben die Suchbedingung von select="team" in select="team[blue_ID='x']" geändert.
Die Funktion besteht darin, eine Beurteilungsbedingung hinzuzufügen und nur die XML-Daten, deren blue_ID-Wert gleich ist x wird angezeigt.
Natürlich können Sie die Bedingungen für die Beurteilung erweitern. Das einfache Urteil, das ich hier treffe, soll es für alle verständlicher machen.
Schließlich wird der neue sortierte Inhalt angezeigt, indem der innerHTML-Wert von Layer1 erneut angezeigt wird.

(2) Im Text:

select="team"
In meinem Fall ist es sortField[1], aber Sie können es im Laufe der Zeit ändern.
Dann müssen Sie genau kalkulieren und keine Fehler machen, sonst finden Sie ein anderes Unternehmen!
Ich stelle eine häufig verwendete Methode bereit: Im Code können Sie eine Schleife verwenden, um zu bestimmen, ob es sich um den Knoten handelt, den Sie benötigen.


Noch ein Punkt:
XML hat extrem strenge Anforderungen an die Groß-/Kleinschreibung. Wenn Ihr Schreiben also nicht standardisiert ist, wird es eine Erkältung bekommen!

Postscript:
Nachdem jeder mit der Idee der Vervollständigung der dynamischen Sortierung und dynamischen Abfrage vertraut ist, werden Sie feststellen, dass unsere Implementierungsmethode tatsächlich sehr einfach ist.
Ändern Sie einfach einen bestimmten Wert und zeigen Sie ihn dann erneut an.
Diesen Gedanken verfolgen wir weiterhin bei der dynamischen Paging-Funktion.

Das Obige sind die praktischen Tipps für XML-Volumen (2): Der Inhalt dynamischer Abfragen. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn)!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage