motivation:
La fonction de requête est le module fonctionnel le plus courant et le plus utilisé que nous ayons vu sur le site Web. Dans le passé, les requêtes d'informations étaient connectées à la base de données et chaque clic nécessitait la prise en charge de la base de données principale. Cependant, dans de nombreux cas, les utilisateurs n'opèrent souvent que sur une certaine partie des données, ce qui non seulement augmente la charge sur le serveur, mais affecte également sérieusement la vitesse de navigation de l'utilisateur.
Dans ce cas, nous devons transmettre au client une certaine partie des données dont l'utilisateur a besoin sous forme de XML, afin que l'utilisateur puisse facilement opérer sur ces données. Cela facilite non seulement les utilisateurs, mais réduit également la charge sur la base de données du serveur. Pourquoi pas! Et cette fonction peut être appliquée à de nombreux autres modules, c'est pourquoi cette fonction de requête dynamique a été ajoutée.
Matériel:
La requête dynamique du volume XML comporte deux fichiers : search.xml et search.xsl.
Les fonctions sont :
Filtrez les données sans actualiser la page, améliorant ainsi efficacement la fonction de requête de données.
Effet:
Parcourez ici
Code:
recherche.xml
<?xml version="1.0" encodage="gb2312" ?>
<?xml-stylesheet type="text/xsl" href="search.xsl" ?>
<Idée Bleue>
<équipe>
<blue_ID>1</blue_ID>
<blue_name>Vol à voile</blue_name>
<blue_text>Une requête simple</blue_text>
<blue_time>11/01/2002 17:35:33</blue_time>
<blue_class>Sujet XML</blue_class>
</équipe>
<équipe>
<blue_ID>2</blue_ID>
<blue_name>oiseau volant</blue_name>
<blue_text>T'épouser te fera du mal</blue_text>
<blue_time>06/09/2001 12:45:51</blue_time>
<blue_class>Essence d'irrigation</blue_class>
</équipe>
<équipe>
<blue_ID>3</blue_ID>
<blue_name>Kao Zi</blue_name>
<blue_text>Application des expressions régulières dans le forum UBB</blue_text>
<blue_time>23/11/2001 21:02:16</blue_time>
<blue_class>Essence de programmation Web</blue_class>
</équipe>
<équipe>
<blue_ID>4</blue_ID>
<blue_name>Tayilang</blue_name>
<blue_text>Manuel complet du pilotage classique de fin d'année v0.1</blue_text>
<blue_time>08/12/2000 10:22:48</blue_time>
<blue_class>Zone d'irrigation du Forum</blue_class>
</équipe>
<équipe>
<blue_ID>5</blue_ID>
<blue_name>mmkk</blue_name>
<blue_text>Résumé du message d'erreur Asp</blue_text>
<blue_time>2001-10-13 16:39:05</blue_time>
<blue_class>javascript</blue_class>
</équipe>
</IdéeBleue>
recherche.xsl
<?xml version="1.0" encodage="gb2312" ?>
<xsl:stylesheet xmlns:xsl=" http://www.w3.org/TR/WD-xsl ">
<xsl:template match="/">
<html>
<tête>
<title>Conseils pratiques XML (2) : Requête dynamique</title>
<style>
body,BlueIdea,team,blue_ID,blue_name,blue_text,blue_time,blue_class{ police : 12px "宋体", "Arial", "Times New Roman" };
table { taille de police : 12 px ; bordure : 0px double ; couleur de la bordure : #99CC99 #99CCCC #CCCCCC ; espacement des cellules : 3 ;
span { taille de police : 12 px ; couleur : rouge ;
</style>
<script>
fonction searchtext(x)
{
feuille de style=document.XSLDocument;
source=document.XMLDocument;
sortField=document.XSLDocument.selectNodes(" //@select ");
si (x!="")
{
sortField[1].value="team[blue_ID='"+x+"']";
Layer1.innerHTML=source.documentElement.transformNode(stylesheet);
}
else {alert("Veuillez saisir des critères de filtre !");}
}
</script>
</tête>
<corps>
<p align="center"><span>Conseils pratiques sur les volumes XML (2) : requête dynamique</span></p>
<div id="Couche1" nom="Couche1">
<xsl:apply-templates select="BlueIdea" />
</div>
<hr size="1" width="500" />
<table align="center" cellpadding="0" cellpacing="0" border="0" >
<tr>
<td>
<span>Veuillez saisir des critères de filtre : </span>
blue_ID= <input type="text" name="searchtext" size="1" maxlength="1" />
<input type="button" class="button" onClick="searchtext(document.all.searchtext.value)" value="Recherche" name="button" />
</td>
</tr>
</table>
</corps>
</html>
</xsl:modèle>
<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>Numéro</td>
<td>Nom</td>
<td>Thème</td>
<td>Heure de publication</td>
<td>Classement</td>
</tr>
<xsl:apply-templates select="team" order-by="blue_ID"/>
</table>
</xsl:modèle>
<xsl:template match="équipe">
<tr align="centre">
<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:modèle>
<xsl:template match="blue_ID">
<td bgcolor="#eeeeee">
<xsl:valeur-de />
</td>
</xsl:modèle>
<xsl:template match="blue_name">
<td>
<xsl:valeur-de />
</td>
</xsl:modèle>
<xsl:template match="blue_text">
<td>
<xsl:valeur-de />
</td>
</xsl:modèle>
<xsl:template match="blue_time">
<td>
<xsl:valeur-de />
</td>
</xsl:modèle>
<xsl:template match="blue_class">
<td>
<xsl:valeur-de />
</td>
</xsl:modèle>
</xsl:feuille de style>
expliquer:
1) search.xml est un fichier de données, je pense que tout le monde n'aura aucun problème.
2) search.xsl est un fichier de format, il y a plusieurs choses auxquelles il faut faire attention.
(1) Dans le scénario :
sortField=document.XSLDocument.selectNodes(" //@select ");
La fonction est la suivante : trouver tous les nœuds avec l'attribut select. C'est ce que j'ai dit dans le tri dynamique
sortField=document.XSLDocument.selectSingleNode(" //@order-by ");
Quelque chose est différent. Veuillez faire attention à cette petite différence et à leurs fonctions respectives.
sortField[1].value="team[blue_ID='"+x+"']";
Par conséquent, sortField[1] est le deuxième nœud trouvé et son nœud correspondant est
<xsl:apply-templates select="team" order-by="blue_ID"/>
Le paramètre x est la valeur saisie dans la zone de texte.
Nous avons modifié la condition de recherche de select="team" en select="team[blue_ID='x']"
La fonction consiste à ajouter une condition de jugement, et seules les données XML dont la valeur blue_ID est égale à x seront affichées.
Bien sûr, vous pouvez enrichir les conditions du jugement. Le jugement simple que je porte ici est de le rendre plus facile à comprendre pour tout le monde.
Enfin, le nouveau contenu trié est affiché en réaffichant la valeur innerHTML de Layer1.
(2) Dans le texte :
select="team"
Dans mon cas, c'est sortField[1], mais cela peut changer au fur et à mesure.
Ensuite, vous devez calculer avec précision et ne pas vous tromper, sinon vous trouverez une autre entreprise !
Je propose une méthode couramment utilisée : dans le code, vous pouvez utiliser une boucle pour déterminer si c'est le nœud dont vous avez besoin.
Encore une chose :
XML a des exigences de cas extrêmement strictes. Alors si votre écriture n’est pas standardisée, elle va s’enrhumer !
post-scriptum :
Une fois que tout le monde sera familiarisé avec l'idée d'effectuer un tri dynamique et une requête dynamique, vous constaterez que notre méthode de mise en œuvre est en fait très simple.
Modifiez simplement une certaine valeur, puis affichez-la à nouveau.
Dans la fonction de pagination dynamique, nous suivons toujours cette idée.