แรงจูงใจ:
ฟังก์ชันแบบสอบถามเป็นโมดูลฟังก์ชันที่ใช้กันทั่วไปและใช้กันทั่วไปที่เราเคยเห็นบนเว็บไซต์ ในอดีต การสืบค้นข้อมูลจะเชื่อมต่อกับฐานข้อมูล และการคลิกทุกครั้งจำเป็นต้องได้รับการสนับสนุนจากฐานข้อมูลส่วนหลัง อย่างไรก็ตาม ในหลายกรณี ผู้ใช้มักจะดำเนินการกับข้อมูลเพียงบางส่วนเท่านั้น ซึ่งไม่เพียงเพิ่มภาระบนเซิร์ฟเวอร์เท่านั้น แต่ยังส่งผลกระทบร้ายแรงต่อความเร็วในการเรียกดูของผู้ใช้อีกด้วย
ในกรณีนี้ เราต้องส่งข้อมูลบางส่วนที่ผู้ใช้ต้องการไปยังไคลเอนต์ในรูปแบบของ XML เพื่อให้ผู้ใช้สามารถดำเนินการกับข้อมูลนี้ได้อย่างง่ายดาย ไม่เพียงแต่อำนวยความสะดวกให้กับผู้ใช้เท่านั้น แต่ยังช่วยลดภาระในฐานข้อมูลเซิร์ฟเวอร์อีกด้วย ทำไมจะไม่ได้! และฟังก์ชันนี้สามารถนำไปใช้กับโมดูลอื่นๆ ได้มากมาย ดังนั้นจึงมีการเพิ่มฟังก์ชันคิวรีแบบไดนามิกนี้
วัสดุ:
การสืบค้นไดนามิกของวอลุ่ม XML มีสองไฟล์: search.xml และ search.xsl
ฟังก์ชันคือ:
กรองข้อมูลโดยไม่ต้องรีเฟรชหน้า ปรับปรุงฟังก์ชันสืบค้นข้อมูลได้อย่างมีประสิทธิภาพ
ผล:
เรียกดูที่นี่
รหัส:
ค้นหา.xml
<?xml version="1.0" encoding="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>แก่นแท้ของการเขียนโปรแกรมเว็บ</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>มมมม</blue_name>
<blue_text>สรุปข้อความแสดงข้อผิดพลาด Asp</blue_text>
<blue_time>2001-10-13 16:39:05</blue_time>
<blue_class>จาวาสคริปต์</blue_class>
</ทีม>
</บลูไอเดีย>
ค้นหา.xsl
<?xml version="1.0" encoding="gb2312" ?>
<xsl:stylesheet xmlns:xsl=" http://www.w3.org/TR/WD-xsl ">
<xsl:แม่แบบที่ตรงกัน="/">
<html>
<หัว>
<title>เคล็ดลับการปฏิบัติ XML (2): แบบสอบถามแบบไดนามิก</title>
<สไตล์>
body,BlueIdea,ทีม,blue_ID,blue_name,blue_text,blue_time,blue_class{ แบบอักษร: 12px "宋体", "Arial", "Times New Roman";
ตาราง { ขนาดตัวอักษร: 12px; เส้นขอบ: 0px; เส้นขอบสี: #99CC99 #99CC99 #CCCCC #CCCCCC;
ขยาย { ขนาดตัวอักษร: 12px;
</สไตล์>
<สคริปต์>
ข้อความค้นหาฟังก์ชัน (x)
-
stylesheet=document.XSLDocument;
แหล่งที่มา=document.XMLDocument;
sortField=document.XSLDocument.selectNodes(" //@select ");
ถ้า (x!="")
-
sortField[1].value="ทีม[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" 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="ค้นหา" name="button" />
</td>
</tr>
</ตาราง>
</ร่างกาย>
</html>
</xsl:แม่แบบ>
<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="ทีม" สั่งซื้อโดย = "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:แม่แบบที่ตรงกัน="blue_ID">
<td bgcolor="#eeeeee">
<xsl:มูลค่าของ />
</td>
</xsl:แม่แบบ>
<xsl:แม่แบบที่ตรงกัน="blue_name">
<td>
<xsl:มูลค่าของ />
</td>
</xsl:แม่แบบ>
<xsl:แม่แบบที่ตรงกัน="blue_text">
<td>
<xsl:มูลค่าของ />
</td>
</xsl:แม่แบบ>
<xsl:template match="blue_time">
<td>
<xsl:มูลค่าของ />
</td>
</xsl:แม่แบบ>
<xsl:แม่แบบที่ตรงกัน="blue_class">
<td>
<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="ทีม[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 เท่านั้น
แน่นอนว่าคุณสามารถเพิ่มเงื่อนไขในการตัดสินได้ การตัดสินง่ายๆ ที่ฉันทำคือการทำให้ทุกคนเข้าใจได้ง่ายขึ้น
ในที่สุด เนื้อหาที่เรียงลำดับใหม่จะแสดงโดยการแสดงค่า HTML ภายในของ Layer1 อีกครั้ง
(2) ในข้อความ:
select="team"
ในกรณีของฉันมันคือ sortField[1] แต่นั่นอาจเปลี่ยนแปลงได้ตามที่คุณต้องการ
จากนั้นคุณต้องคำนวณให้แม่นยำและไม่ผิดพลาด ไม่เช่นนั้น คุณจะเจอบริษัทอื่น!
ฉันให้วิธีการที่ใช้โดยทั่วไป: ในโค้ด คุณสามารถใช้การวนซ้ำเพื่อพิจารณาว่าเป็นโหนดที่คุณต้องการหรือไม่
อีกสิ่งหนึ่ง:
XML มีข้อกำหนดตัวพิมพ์ที่เข้มงวดมาก ดังนั้นหากงานเขียนของคุณไม่ได้มาตรฐาน จะเป็นหวัด!
คำลงท้าย:
หลังจากที่ทุกคนคุ้นเคยกับแนวคิดในการทำให้การเรียงลำดับแบบไดนามิกและการสืบค้นแบบไดนามิกเสร็จสมบูรณ์แล้ว คุณจะพบว่าวิธีการนำไปใช้งานของเรานั้นง่ายมากจริงๆ
เพียงแก้ไขค่าบางอย่างแล้วแสดงอีกครั้ง
ในฟังก์ชันเพจแบบไดนามิก เรายังคงปฏิบัติตามแนวคิดนี้