モチベーション:
クエリ関数は、この Web サイトで見た中で最も一般的でよく使用される機能モジュールです。以前は、情報クエリはデータベースに接続されており、クリックするたびにバックエンド データベースのサポートが必要でした。ただし、多くの場合、ユーザーはデータの特定の部分のみを操作することが多く、サーバーの負荷が増大するだけでなく、ユーザーの閲覧速度に重大な影響を及ぼします。
この場合、ユーザーがこのデータを簡単に操作できるように、ユーザーが必要とするデータの特定の部分を XML 形式でクライアントに渡す必要があります。これにより、ユーザーが使いやすくなるだけでなく、サーバー データベースの負担も軽減されます。なぜだめですか!そして、この機能は他の多くのモジュールに適用できるため、この動的クエリ機能が追加されました。
材料:
XML ボリュームの動的クエリには、search.xml と search.xsl という 2 つのファイルがあります。
その機能は次のとおりです。
ページを更新せずにデータをフィルタリングし、データ クエリ機能を効果的に向上させます。
効果:
ここを参照してください
コード:
検索.xml
<?xml バージョン="1.0" エンコーディング="gb2312" ?>
<?xml-stylesheet type="text/xsl" href="search.xsl" ?>
<ブルーアイデア>
<チーム>
<blue_ID>1</blue_ID>
<blue_name>帆走</blue_name>
<blue_text>簡単なクエリ</blue_text>
<blue_time>2002-1-11 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>2001-09-06 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>2001-11-23 21:02:16</blue_time>
<blue_class>Web プログラミングのエッセンス</blue_class>
</チーム>
<チーム>
<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>
</チーム>
<チーム>
<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>
</チーム>
</ブルーアイデア>
検索.xsl
<?xml バージョン="1.0" エンコーディング="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{ font: 12px "宋体", "Arial", "Times New Roman";
テーブル { フォントサイズ: 12px; ボーダー: 0px; ボーダーカラー: #99CC99 #CCCCCC; セルスペース:3; テキスト装飾: ブリンク}
スパン { フォントサイズ: 12px; }
</スタイル>
<スクリプト>
関数検索テキスト(x)
{
スタイルシート=ドキュメント.XSLドキュメント;
ソース=ドキュメント.XMLドキュメント;
sortField=document.XSLDocument.selectNodes(" //@select ");
if (x!="")
{
sortField[1].value="チーム[blue_ID='"+x+"']";
Layer1.innerHTML=source.documentElement.transformNode(スタイルシート);
}
else {alert("フィルタ条件を入力してください!");}
}
</script>
</head>
<本文>
<p align="center"><span>XML ボリュームの実践的なヒント (2): 動的クエリ</span></p>
<div id="レイヤー1" name="レイヤー1">
<xsl:apply-templates select="BlueIdea" />
</div>
<hr size="1" width="500" />
<テーブル align="center" cellpadding="0" cellpacing="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="検索" name="button" />
</td>
</tr>
</テーブル>
</body>
</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">
<td>
<xsl:値 />
</td>
</xsl:テンプレート>
<xsl:template match="blue_text">
<td>
<xsl:値 />
</td>
</xsl:テンプレート>
<xsl:template match="blue_time">
<td>
<xsl:値 />
</td>
</xsl:テンプレート>
<xsl:template match="blue_class">
<td>
<xsl:値 />
</td>
</xsl:テンプレート>
</xsl:スタイルシート>
説明する:
1) search.xml はデータ ファイルです。誰でも問題ないと思います。
2) search.xsl はフォーマット ファイルです。注意すべき点がいくつかあります。
(1) スクリプト内:
sortField=document.XSLDocument.selectNodes(" //@select ");
機能は次のとおりです。属性 select を持つすべてのノードを検索します。これは動的ソートで私が言ったことです
sortField=document.XSLDocument.selectSingleNode(" //@order-by ");
何かが違います。この小さな違いとそれぞれの機能に注目してください。
sortField[1].value="チーム[blue_ID='"+x+"']";
したがって、sortField[1] は 2 番目に見つかったノードであり、それに対応するノードは次のとおりです。
<xsl:apply-templates select="team" order-by="blue_ID"/>
パラメータ x は、テキスト ボックスに入力された値です。
select="team" の検索条件を select="team[blue_ID='x']" に変更しました。
判定条件を追加する機能で、blue_IDの値がxに等しいXMLデータのみを表示します。
もちろん、判定条件を充実させることもできます。
最後に、Layer1 の innerHTML 値を再表示することによって、新しくソートされたコンテンツが表示されます。
(2) 本文中:
select="チーム"
私の場合はsortField[1]ですが、途中で変わる可能性があります。
それから、正確に計算して間違いを犯さなければ、別の会社を見つけることになります。
私は一般的に使用される方法を提供します。コード内でループを使用して、それが必要なノードであるかどうかを判断できます。
もう一つ:
XML には非常に厳密な大文字と小文字の要件があります。なので、文章が統一されていないと風邪をひいてしまいます!
追記:
動的ソートと動的クエリを完成させるというアイデアを誰もが理解すると、実装方法が実際には非常に簡単であることがわかるでしょう。
特定の値を変更して、再度表示するだけです。
動的ページング機能でもこの考え方が踏襲されています。