ไทยสาร.คอม (ThaiSarn.com:ข่าวสารเพื่อคนไทย)คือศูนย์กลางแลกเปลี่ยนข่าวสารประเทศไทยที่ให้บริการแลกเปลี่ยนข่าวสารในรูปแบบอิเล็กทรอนิกส์บนเครือข่ายอินเทอร์เน็ตจากแหล่งข่าวต่างๆทั้งจากภาครัฐและภาคเอกชนของไท ในรูปแบบอัตโนมัติ โดยใช้เทคโนโลยีสารสนเทศในรูปแบบใหม่ที่เรียกว่า "Extensible Markup Language หรือ XML" เข้ามาประยุกต์เพื่อเป็นการปฏิวัติการเผยแพร่ข่าวสารบนเว็บไซต์ในประเทศไทยและเป็นทางเลือกใหม่ให้แก่ประชาชนไทยสามารถได้รับทราบข่าวสาร ได้อย่างมีประสิทธิภาพ คัดลอกจาก Thaisarn.com
สำหรับบทความนี้จะนำเสนอเกี่ยวกับวิธีการดึงข่าวจาก Thaisarn.com ที่เป็นเอกสาร XML มาแสดงผลในเวบไซต์ของเราโดยใช้ ASP.net(VB) ดังตัวอย่างในหน้าแรก ซึ่ง ThaiSarn.com เองจะมีข่าวที่ส่งมาจากแหล่งข่าวต่าง ๆที่มีอยู่ ทำให้ ThaiSarn.com มีข่าวที่หลายหมวดหมู่ และข่าวเหล่านั้นจะ Update โดยอัตโนมัติทั้งใน ThaiSarn.com และ เวบไซต์ที่ดึงข่าวมา ดังนั้นเราจึงได้ข่าวมาโดยที่ไม่ต้องเพิ่มข่าวเอง เพียงแค่เขียน Code ขึ้นมาเพื่อดึงเท่านั้น ฟังดูแล้วน่าสนใจใช่มั้ยครับเริ่มกันเลยดีกว่า
ก่อนอื่นต้องทำความเข้าใจกันก่อนว่า Thaisarn.com จัดเตรียมอะไรไว้ให้บ้าง
Thaisarn.com ได้จัดเตรียม Query ข่าวให้ที่ URL : http://www.thaisarn.com/services/distributor/xml_distributor.php โดยเราจะส่ง Parameter หรือตัวแปรในการ Query ผ่าน URL นี้ สำหรับค่า Parameter มีดังนี้
fdate=dd/mm/yyyy เป็นตัวแปรกำหนดการดึงข่าวของวันนั้น ๆ (วันที่ dd เดือน mm ปีค.ศ. yyyy)
fdate=dd/mm/yyyy&tdate=DD/MM/YYYY เป็นตัวแปรกำหนดการดึงข่าวของทั้งหมดจากวันที่ dd เดือน mm ปีค.ศ. yyyy ถึงวันที่ DD เดือน MM ปีค.ศ. YYYY
nlatest=K เลือกข่าวล่าสุด K ข่าว (ที่ link ตัวอย่างให้ข่าวล่าสุด 7 ข่าว)
category=CAT ให้ข่าวประเภท CAT เท่านั้น สามารถเลือกข่าวหลายประเภทได้โดยกั้นแต่ละประเภทด้วย "," เช่น category=รัฐบาล,บันเทิง ให้ข่าวรัฐบาล และข่าวบันเทิง [หมวดข่าวทั้งหมด]
source=SRC ให้ข่าวจากแหล่งข่าว SRC เท่านั้น สามารถเลือกข่าวจากหลายแหล่งข่าวได้โดยกั้นแต่ละแหล่งด้วย "," เช่น source=ไทยรัฐ,ผู้จัดการ [แหล่งข่าวทั้งหมด]
keyword=KWD ให้ข่าวที่มีหัวข้อข่าวหรือ คำสำคัญในข่าวมีคำว่า "KWD" สามารถกำหนดคำสำคัญมากกว่าหนึ่งคำได้โดยแยกแต่ละคำด้วย "," เช่น keyword=CPU,intel
ถ้ามีการส่ง Parameter หลายๆตัว แต่ละตัวจะต้องกั้นด้วย & เช่น "xml_distributor.php?source=ไทยรัฐ&nlatest=7&category=เทคโนโลยี" หลังจากตั้งค่า Parameter ต่าง ๆเรียบร้อยแล้วก็ต้องมาลองดูก่อนว่าถูกต้องหรือไม่ โดยใช้ Internet Explorer ช่วย โดยพิมพ์ URL http://www.thaisarn.com/services/distributor/xml_distributor.php? แล้วตามด้วย Pameter ต่างๆ ถ้าถูกต้องก็จะได้ผลดังรูปตัวอย่าง
คุณสามารถอ่านรายละเอียดทั้งหมดได้ที่ http://www.thaisarn.com/
ต่อไปก็เป็นส่วนของ Code จริงๆ ซึ่งมีอยู่ด้วยกัน 2 ส่วน คือ
1. XML Schema (XslTransform) : เป็นส่วนที่กำหนดโครงสร้าง XML ที่จะแสดงผล
NewStyle.xsl
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="newspage">
<xsl:apply-templates select="news" />
</xsl:template>
<xsl:template match="news">
<table width="470" border="0" cellpadding="1" cellspacing="1"><tr>
<td><img src="images/DotMnu.gif" width="9" height="9" hspace="2"/>
<a target="_blank">
<xsl:attribute name="href" >
<xsl:value-of select='link'/>
<xsl:value-of select='source'/>
</xsl:attribute>
<xsl:value-of select='title'/>
</a>
[<xsl:value-of select='pubdate'/>]
</td></tr></table>
</xsl:template>
</xsl:stylesheet> |
2. XML Control : เป็นส่วนที่แสดงผลจริง
NewXml.aspx
<%@ Page Language="VB" autoeventwireup="True" Debug="true" %>
<%@ import Namespace="System.Xml" %>
<%@ import Namespace="System.Xml.Xsl" %>
<script runat="server">
Sub Page_Load(sender As Object, e As EventArgs)
Dim doc As XmlDocument = New XmlDocument()
Dim XmlURL = "http://www.thaisarn.com/services/distributor/xml_distributor.php?category=%E0%B7%A4%E2%B9%E2%C5%C2%D5&nlatest=100&source=%bc%d9%E9%a8%d1%b4%a1%d2%c3,%a1%c3%d8%a7%e0%b7%be%b8%D8%c3%a1%d4%a8"
doc.Load(XmlURL)
Dim trans As XslTransform = new XslTransform()
trans.Load(Server.MapPath("NewsStyle.xsl"))
xml1.Document = doc
xml1.Transform = trans
End Sub
</script>
<html>
<head>
<title>www.NextProject.Net [News]</title>
<meta http-equiv="Content-Type" content="text/html; charset=tis-620" />
</head>
<body >
<form runat="server"><asp:Xml id="xml1" runat="server"></asp:Xml></form>
</body>
</html> |
สำหรับการใช้งานจริงอาจมีจะมีความยุ่งยากอย่างหนึ่งคือ ในการส่ง Parameter ที่เป็นภาษาไทย ซึ่งในตอนเรียกผ่าน Internet Explorer จะแสดงผลถูกต้อง แต่ตอนเรียกผ่าน ASP.net จะทำไม่ได้ (ผมเองยังไม่ทราบว่าความผิดพลาดเกิดจากอะไร เข้าใจว่าคงเกี่ยวกับ Code Page) การแก้ไขก็ก็คือต้องส่งค่า Parameter ที่เป็น Code Page จริงๆ กล่าวคือเราต้องเข้ารหัส Code Page เช่น
"เทคโนโลยี" จะต้องเปลี่ยนเป็น "%E0%B7%A4%E2%B9%E2%C5%C2%D5"
"ผู้จัดการ" จะต้องเปลี่ยนเป็น "%bc%d9%E9%a8%d1%b4%a1%d2%c3"
"กรุงเทพธุรกิจ" จะต้องเปลี่ยนเป็น "%a1%c3%d8%a7%e0%b7%be%b8%D8%c3%a1%d4%a8"
อักขระ อื่นๆ เช่น "?" "," และ "&" ยังใช้เหมือนเดิม
วิธีการเข้ารหัส Code Page หารายละเอียดได้จาก http://www.batutis.com/i18n/papers/lmbcs/group0B.html นะครับ สำหรับบทความนี้ก็ขอจบแค่นี้ล่ะครับ