Heim > Artikel > Backend-Entwicklung > Praktische Tipps zum XML-Volume (2): Dynamische Abfrage
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>
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='"+x+"']"; 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>
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");
wird verwendet, um alle Knoten mit dem Attribut „select“ zu finden. Dies unterscheidet sich etwas von dem
sortField=document.XSLDocument.selectSingleNode("//@order-by");
, 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='"+x+"']";
SortField[1] ist also der zweite gefundene Knoten, und der entsprechende Knoten ist
<xsl:apply-templates select="team" order-by="blue_ID"/>
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)!