<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-3064694297461005708</id><updated>2011-11-27T15:29:27.093-08:00</updated><category term='php5'/><category term='conf'/><category term='xml'/><category term='xsl'/><category term='Soap'/><category term='webservices'/><category term='plug-in'/><category term='เอกซ์เอ็มแอล'/><category term='SoapClient'/><category term='parsing'/><category term='C#.NET'/><category term='WSO2'/><category term='netbeans'/><category term='emptyLine'/><category term='rest'/><category term='เว็บเซอร์วิส'/><category term='PHP'/><category term='firefox'/><category term='WSF'/><category term='PTTInfo'/><category term='ปตท'/><category term='html'/><category term='แปลงข้อมูล'/><category term='trimSpaces'/><category term='เรียกเว็บเซอร์วิส'/><category term='servlet'/><category term='callWS'/><category term='xmlschema'/><category term='transform'/><category term='tomcat5'/><category term='thai'/><category term='error'/><title type='text'>เอกซ์เอ็มแอลและเว็บเซอร์วิสสำหรับคนไทย</title><subtitle type='html'>ความรู้เอกซ์เอ็มแอล เว็บเซอร์วิส การแลกเปลี่ยนข้อมูล</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://thaixmlws.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3064694297461005708/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://thaixmlws.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Kanda Runapogsa Saikaew</name><uri>http://www.blogger.com/profile/17128646874654618541</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>8</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3064694297461005708.post-6814990585648765383</id><published>2009-08-01T20:43:00.000-07:00</published><updated>2009-08-02T03:28:01.201-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='plug-in'/><category scheme='http://www.blogger.com/atom/ns#' term='xml'/><category scheme='http://www.blogger.com/atom/ns#' term='netbeans'/><category scheme='http://www.blogger.com/atom/ns#' term='xmlschema'/><title type='text'>การเพิ่ม Plug-in XML Schema ใน NetBeans</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_HibF8A8sdMk/SnVpn1diCmI/AAAAAAAAAGw/GDezkSO1cvk/s1600-h/selectXMLSchemaMenu.png"&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_HibF8A8sdMk/SnVovBDo_cI/AAAAAAAAAGg/JkYYCOm6wuM/s1600-h/selectXMLSchema.png"&gt;&lt;/a&gt;&lt;div&gt;ในการดาวน์โหลด Java JDK พ่วงกับ NetBeans นั้นเรามักจะพบว่า Netbeans จะไม่ได้มีฟังก์ชันการใช้งานครบตามที่เราต้องการ เช่น ไม่มีฟังก์ชันทำให้เราสร้างเอกสาร XML Schema ได้  จริงๆ แล้วเราสามารถเพิ่ม Plug-in ใน NetBeans ได้  วิธีการนั้นสามารถทำได้ดังนี้&lt;/div&gt;&lt;div&gt;&lt;br /&gt;1. คลิกเลือกเมนู Tools &gt; Plugins&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_HibF8A8sdMk/SnVou7BvQtI/AAAAAAAAAGY/TGbqdmM8Gv8/s1600-h/selectPluginMenu.png"&gt;&lt;img src="http://2.bp.blogspot.com/_HibF8A8sdMk/SnVou7BvQtI/AAAAAAAAAGY/TGbqdmM8Gv8/s320/selectPluginMenu.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5365309686410068690" style="float: left; margin-top: 0px; margin-right: 10px; margin-bottom: 10px; margin-left: 0px; cursor: pointer; width: 146px; height: 285px; " /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_HibF8A8sdMk/SnVn67-F2rI/AAAAAAAAAGQ/f6f8g1jOgvA/s1600-h/clickNextButton.png"&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_HibF8A8sdMk/SnVn6DNz8DI/AAAAAAAAAF4/5p1pYbdK3IA/s1600-h/clickAvailablePluginSortNames.png"&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;2. เลือกแท็บ Available Plugins จากนั้นคลิกที่คอลัมน์ Name เพื่อเรียงลำดับชื่อจากมากไปหาน้อย&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_HibF8A8sdMk/SnVn6DNz8DI/AAAAAAAAAF4/5p1pYbdK3IA/s1600-h/clickAvailablePluginSortNames.png"&gt;&lt;img src="http://3.bp.blogspot.com/_HibF8A8sdMk/SnVn6DNz8DI/AAAAAAAAAF4/5p1pYbdK3IA/s320/clickAvailablePluginSortNames.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5365308778075123762" style="float: left; margin-top: 0px; margin-right: 10px; margin-bottom: 10px; margin-left: 0px; cursor: pointer; width: 320px; height: 186px; " /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_HibF8A8sdMk/SnVn6EKyPMI/AAAAAAAAAFw/MyNC2qasySQ/s1600-h/clickAcceptAndInstall.png"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;3.  คลิกเลือกที่จะติดตั้ง XML Schema and WSDL&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt; &lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_HibF8A8sdMk/SnVn67-F2rI/AAAAAAAAAGQ/f6f8g1jOgvA/s1600-h/clickNextButton.png"&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_HibF8A8sdMk/SnVovBDo_cI/AAAAAAAAAGg/JkYYCOm6wuM/s1600-h/selectXMLSchema.png"&gt;&lt;img src="http://4.bp.blogspot.com/_HibF8A8sdMk/SnVovBDo_cI/AAAAAAAAAGg/JkYYCOm6wuM/s320/selectXMLSchema.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5365309688028659138" style="float: left; margin-top: 0px; margin-right: 10px; margin-bottom: 10px; margin-left: 0px; cursor: pointer; width: 320px; height: 71px; " /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_HibF8A8sdMk/SnVou7BvQtI/AAAAAAAAAGY/TGbqdmM8Gv8/s1600-h/selectPluginMenu.png"&gt;&lt;/a&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;4.  คลิกปุ่ม Install&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 238); -webkit-text-decorations-in-effect: underline; "&gt;&lt;img src="http://2.bp.blogspot.com/_HibF8A8sdMk/SnVn6q4ANwI/AAAAAAAAAGI/YXbWgODyWb4/s320/clickInstallButton.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5365308788721071874" style="float: left; margin-top: 0px; margin-right: 10px; margin-bottom: 10px; margin-left: 0px; cursor: pointer; width: 320px; height: 66px; " /&gt;&lt;br /&gt;&lt;/span&gt; &lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="color:#0000EE;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="color:#0000EE;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="color:#0000EE;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="color:#0000EE;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;5.  จากนั้นจะมีหน้าต่าง NetBeans IDE Install ซึ่งบอกว่า plugin  XML Schema and WSDL จะถูกติดตั้ง ให้คลิก Next&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_HibF8A8sdMk/SnVn67-F2rI/AAAAAAAAAGQ/f6f8g1jOgvA/s1600-h/clickNextButton.png"&gt;&lt;img src="http://4.bp.blogspot.com/_HibF8A8sdMk/SnVn67-F2rI/AAAAAAAAAGQ/f6f8g1jOgvA/s320/clickNextButton.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5365308793310010034" style="float: left; margin-top: 0px; margin-right: 10px; margin-bottom: 10px; margin-left: 0px; cursor: pointer; width: 320px; height: 284px; " /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_HibF8A8sdMk/SnVn6q4ANwI/AAAAAAAAAGI/YXbWgODyWb4/s1600-h/clickInstallButton.png"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;6. จากนั้นให้คลิกช่อง  I accept …  และคลิกปุ่ม Install&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 238); -webkit-text-decorations-in-effect: underline; "&gt;&lt;img src="http://2.bp.blogspot.com/_HibF8A8sdMk/SnVn6EKyPMI/AAAAAAAAAFw/MyNC2qasySQ/s320/clickAcceptAndInstall.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5365308778330864834" style="float: left; margin-top: 0px; margin-right: 10px; margin-bottom: 10px; margin-left: 0px; cursor: pointer; width: 320px; height: 286px; " /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;7.  จากนั้นให้คลิกปุ่ม Finish&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt; &lt;span class="Apple-style-span" style="color: rgb(0, 0, 238); -webkit-text-decorations-in-effect: underline; "&gt;&lt;img src="http://3.bp.blogspot.com/_HibF8A8sdMk/SnVn6QA--0I/AAAAAAAAAGA/X1b0KHXkCAs/s320/clickFinish.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5365308781510982466" style="float: left; margin-top: 0px; margin-right: 10px; margin-bottom: 10px; margin-left: 0px; cursor: pointer; width: 320px; height: 286px; " /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;8.  ทดสอบโดยการเปิดเมนู New File แล้วเลือก Category “XML” ตอนนี้จะพบว่ามีเมนูสำหรับสร้างเอกสาร XML Schema&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 238); -webkit-text-decorations-in-effect: underline; "&gt;&lt;img src="http://1.bp.blogspot.com/_HibF8A8sdMk/SnVpn1diCmI/AAAAAAAAAGw/GDezkSO1cvk/s320/selectXMLSchemaMenu.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5365310664168573538" style="float: left; margin-top: 0px; margin-right: 10px; margin-bottom: 10px; margin-left: 0px; cursor: pointer; width: 320px; height: 206px; " /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3064694297461005708-6814990585648765383?l=thaixmlws.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thaixmlws.blogspot.com/feeds/6814990585648765383/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3064694297461005708&amp;postID=6814990585648765383' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3064694297461005708/posts/default/6814990585648765383'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3064694297461005708/posts/default/6814990585648765383'/><link rel='alternate' type='text/html' href='http://thaixmlws.blogspot.com/2009/08/plug-in-xml-schema-netbeans.html' title='การเพิ่ม Plug-in XML Schema ใน NetBeans'/><author><name>Kanda Runapogsa Saikaew</name><uri>http://www.blogger.com/profile/17128646874654618541</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_HibF8A8sdMk/SnVou7BvQtI/AAAAAAAAAGY/TGbqdmM8Gv8/s72-c/selectPluginMenu.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3064694297461005708.post-6075729795014398375</id><published>2009-02-17T08:09:00.000-08:00</published><updated>2009-02-17T08:14:14.571-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Soap'/><category scheme='http://www.blogger.com/atom/ns#' term='rest'/><category scheme='http://www.blogger.com/atom/ns#' term='เว็บเซอร์วิส'/><category scheme='http://www.blogger.com/atom/ns#' term='xml'/><category scheme='http://www.blogger.com/atom/ns#' term='เอกซ์เอ็มแอล'/><category scheme='http://www.blogger.com/atom/ns#' term='webservices'/><title type='text'>เว็บเซอร์วิสคืออะไร</title><content type='html'>อินเทอร์เน็ต ได้ทำให้การสื่อสาร ข้อมูลระหว่างมนุษย์เป็นไปได้อย่างรวดเร็วและสะดวก ซึ่งได้มีผลกระทบต่อหลายวงการ อย่างเช่น ในการศึกษานั้น ทำให้ผู้เรียนสามารถศึกษาสิ่งต่าง ๆ ได้จากสื่ออิเลคทรอนิกส์ซึ่งสามารถเข้าถึงได้ผ่านอินเตอร์เน็ต ในการทำธุรกิจ ทำให้เจ้าของผลิตภัณฑ์ พันธมิตรคู่ค้า ตลอดจนลูกค้า มีการสื่อสารและทำงานร่วมกัน ไม่ว่าจะอยู่ในสาขาอาชีพใด การติดต่อสื่อสารและทำงานร่วมกันระหว่างองค์กรนั้นจำเป็นต้องเกิดขึ้น ในอดีตที่ผ่านมาองค์กรต่าง ๆ มักจะประสบปัญหาจากการทำงานร่วมกันโดยใช้แอพพลิเคชันต่างๆ ที่ถูกพัฒนามาจากหลากหลายแพลตฟอร์ม หลากหลายระบบปฏิบัติการ หลากหลายภาษา และถึงแม้ว่าองค์กรต่างๆ สามารถที่จะเชื่อมต่อแอพพลิเคชันต่างๆ เข้าด้วยกันได้ แต่การทำเช่นนั้นก็มีค่าใช้จ่ายที่สูง และมีความซับซ้อนมาก ด้วยเหตุนี้เองที่ทำให้มีความต้องการมาตราฐานกลาง เพื่อทำให้การติดต่อสื่อสารและทำงานร่วมกันองค์กรง่าย และรวดเร็วมากขึ้น มาตราฐานกลางนั่นก็คือเว็บเซอร์วิส&lt;br /&gt;&lt;br /&gt;เว็บเซอร์วิส (Web Services) เป็นการ "บริการ" ที่เป็นระบบซอฟต์แวร์ที่ออกแบบมาเพื่อสนับสนุนการทำงาน ระหว่างคอมพิวเตอร์กับคอมพิวเตอร์ผ่านระบบเครือข่าย โดยที่ภาษาที่ใช้ในการติดต่อสื่อสารระหว่างคอมพิวเตอร์ ซึ่งก็คือภาษาเอกซ์เอ็มแอล (XML) ตัวอย่างเช่น การบริการในการเช็คราคาหุ้นของตลาดหุ้นหลาย ๆ ที่และอ่านข่าวจากแหล่งข่าว ๆ หลายที่โดยให้เฉพาะข่าวของบริษัทที่ผู้ขอใช้บริการสนใจ ผู้ให้บริการเว็บเซอร์วิสหนึ่งอาจจะเป็นผู้ขอบริการเว็บเซอร์วิสอื่น ยกตัวอย่างเช่น เว็บเซอร์วิสที่ให้บริการข้อมูลก่อนการซื้อขายหุ้น อาจจะเป็นผู้ขอใช้บริการของเว็บเซอร์วิสที่ให้บริการการให้ข่าว&lt;br /&gt;&lt;br /&gt;ถึง แม้ว่าจะมีเทคโนโลยีอื่นอย่างเช่น DCOM และ RMI ที่ทำให้โปรแกรมและโปรแกรมสามารถคุยกันได้  แต่เทคโนโลยีเหล่านี้มีข้อจำกัดในส่วนของแพลตฟอร์มหรือภาษาที่โปรแกรมจำเป็น จะต้องใช้ตรงกัน ในทางตรงกันข้าม เว็บเซอร์วิสทำให้โปรแกรมที่พัฒนาด้วยภาษาที่แตกต่างกันหรือพัฒนาบนแพลตฟอร์ มที่แตกต่างกันสามารถคุยกันได้  ความสามารถของเว็บเซอร์วิสที่ทำให้โปรแกรมต่างภาษาต่างแพลตฟอร์มต่างอุปกรณ์ อิเล็กทรอนิกส์คุยกันได้นั้น เป็นจุดแข็งของเว็บเซอร์วิส ที่สามารถจะเชื่อมบริการหลายๆอันเข้าด้วยกัน แนวความคิดนี้ได้ถูกนำมาวางแผนและนำเสนอมาตรฐานที่จะทำให้เว็บเซอร์วิส ติดต่อกันได้อย่างมีประสิทธิภาพเช่น การใช้เอกสารภาษา WSDL (Web Services Description Language) ซึ่งเป็นภาษา XML ประเภทหนึ่ง WSDL (Web Services Description Language) ที่มาอธิบายการเรียกใช้เว็บเซอร์วิสซึ่งเปรียบเสมือนการอ่านคู่มือการใช้งาน โปรแกรมนั่นเอง แต่ทว่ามีข้อแตกต่างกันตรงที่ไม่เฉพาะมนุษย์เท่านั้นที่สามารถเข้าใจคู่มือ นั่น โปรแกรมที่สามารถอ่านเอกสารภาษา XML เข้าใจสามารถที่จะเข้าใจเอกสาร WSDL ได้เช่นกัน ซึ่งจากคุณสมบัตินี้ช่วยทำให้การเรียกใช้เว็บเซอร์วิสเป็นไปได้อย่าง อัตโนมัติ&lt;br /&gt;&lt;br /&gt;นอก จาก XML จะถูกใช้ในการเป็นภาษาในการอธิบายการเรียกใช้เว็บเซอร์วิสแล้ว XML ยังเป็นภาษาที่ใช้ในการบันทึกข้อมูลระหว่างผู้ให้บริการและผู้ขอใช้การบริ การเว็บเซอร์วิส รูปแบบของข้อมูล XML ที่ใช้ในการติดต่อนี้เรียกว่าSOAP (Simple Object Access Protocol) เนื่องจากข้อมูลที่ติดต่ออยู่ในรูปแบบ XML ทำให้โปรแกรมต่าง ๆ สามารถติดต่อกันได้ ถึงแม้ว่าอาจจะถูกพัฒนาและเรียกใช้บนแพลตฟอร์มที่แตกต่างกัน หรือใช้ภาษาที่แตกต่างกันในการพัฒนา ทั้งนี้เนื่องจาก XML เป็นภาษาอักขระ (text) ซึ่งระบบปฎิบัติการทุกระบบสามารถเข้าใจ นอกจากนี้การที่ XMLมีแท๊ก (tag) และรูปแบบโครงสร้างที่อธิบายข้อมูลด้วยตัวมันเอง ทำให้การเข้าใจและการจัดการข้อมูล SOAP messages นั้นสามารถทำได้โดยโปรแกรมและช่วยทำให้การติดต่อระหว่าง ผู้ให้บริการและผู้ใช้เว็บเซอร์วิสเป็นไปได้อย่างอัตโนมัติ&lt;br /&gt;&lt;br /&gt;แต่ อย่างไรก็ตามเว็บเซอร์วิสไม่จำเป็นจะต้องส่งข้อความในรูปแบบ SOAP เท่านั้น หากเป็นซอฟต์แวร์ที่ส่งข้อมูล XML โดยใช้ Internet Protocol จะถือว่าเป็นเว็บเซอร์วิสเช่นเดียวกัน แต่จะอยู่ในประเภท REST Web Service&lt;br /&gt;&lt;br /&gt;เนื้อหาของบันทึกปรากฎโดยผู้เขียนคนเดียวกัน (อ กานดา) ที่&lt;br /&gt;&lt;br /&gt;&lt;a href="http://chatpong.exteen.com/20050814/entry-1"&gt;http://chatpong.exteen.com/20050814/entry-1&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://gotoknow.org/blog/krunapon/14438"&gt;http://gotoknow.org/blog/krunapon/14438&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://gotoknow.org/blog/xmlws/234640"&gt;http://gotoknow.org/blog/xmlws/234640&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3064694297461005708-6075729795014398375?l=thaixmlws.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thaixmlws.blogspot.com/feeds/6075729795014398375/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3064694297461005708&amp;postID=6075729795014398375' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3064694297461005708/posts/default/6075729795014398375'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3064694297461005708/posts/default/6075729795014398375'/><link rel='alternate' type='text/html' href='http://thaixmlws.blogspot.com/2009/02/blog-post.html' title='เว็บเซอร์วิสคืออะไร'/><author><name>Kanda Runapogsa Saikaew</name><uri>http://www.blogger.com/profile/17128646874654618541</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3064694297461005708.post-6042994630202976875</id><published>2009-02-15T22:16:00.000-08:00</published><updated>2009-02-15T22:35:56.026-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='แปลงข้อมูล'/><category scheme='http://www.blogger.com/atom/ns#' term='xml'/><category scheme='http://www.blogger.com/atom/ns#' term='transform'/><category scheme='http://www.blogger.com/atom/ns#' term='php5'/><category scheme='http://www.blogger.com/atom/ns#' term='xsl'/><category scheme='http://www.blogger.com/atom/ns#' term='html'/><title type='text'>การแปลงไฟล์ XML ให้เป็น HTML โดยใ้ช้ XSL และ PHP</title><content type='html'>บ่อยครั้งที่ข้อมูล XML ดูยากเพราะเป็นตัวอักขระล้วน  ดังนั้นผู้พัฒนาโปรแกรมจึงต้องการนำเสนอข้อมูลที่ดูง่ายกว่าเช่นในรูปแบบ HTML เราสามารถเขียนไฟล์ XSL และแปลงข้อมูลโดยพัฒนาโปรแกรม PHP ได้  &lt;br /&gt;&lt;br /&gt;เช่น เราต้องการแปลงข้อมูลในไฟล์ allResults.xml  ให้เป็นตารางในไฟล์ HTML ดังแสดงในรูปที่ 1 และรูปที่ 2&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_HibF8A8sdMk/SZkGyj-NE0I/AAAAAAAAADA/4DrTJnElGXY/s1600-h/allResults.png"&gt;&lt;img style="float:center; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 320px; height: 301px;" src="http://3.bp.blogspot.com/_HibF8A8sdMk/SZkGyj-NE0I/AAAAAAAAADA/4DrTJnElGXY/s320/allResults.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5303277501924840258" /&gt;&lt;/a&gt;&lt;br /&gt;รูปที่ 1&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_HibF8A8sdMk/SZkIXnpbzuI/AAAAAAAAADI/9r32YzKeDm4/s1600-h/result.png"&gt;&lt;img style="float:center; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 320px; height: 224px;" src="http://1.bp.blogspot.com/_HibF8A8sdMk/SZkIXnpbzuI/AAAAAAAAADI/9r32YzKeDm4/s320/result.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5303279238078254818" /&gt;&lt;/a&gt;&lt;br /&gt;รูปที่ 2&lt;br /&gt;&lt;br /&gt;ในการแปลงข้อมูลนั้นมีได้หลายวิีธี&lt;br /&gt;1) อาจจะเขียนไฟล์ XSL ที่ไปดึงข้อมูลจาก allResults.xml โดยตรงก็ได้ &lt;br /&gt;2) ใช้ XML parser เพื่อดึงข้อมูลจาก allResults.xml แล้วเก็บไว้ในไฟล์ results.xml เพื่อให้เขียนไฟล์ XSL ได้ง่ายขึ้น&lt;br /&gt;&lt;br /&gt;&amp;lt;?php&lt;br /&gt;// โค้ดนี้ใช้วิธีที่ 2 ซึ่งใช้ XML parser เพื่อดึงข้อมูลจาก allResults.xml &lt;br /&gt;// แล้วเก็บไว้ในไฟล์ results.xml เพื่อให้เขียนไฟล์ XSL ได้ง่ายขึ้น&lt;br /&gt;&lt;br /&gt;// เขียน XML declaration ในไฟล์ xml results.xml&lt;br /&gt;$xml_result = "&lt;?xml version='1.0'?&gt;";&lt;br /&gt;$xml_result .= "&lt;theaters location='Ann Arbor, MI'&gt;";&lt;br /&gt;&lt;br /&gt;// อ่านข้อมูลจากไฟล์ allResults.xml&lt;br /&gt;$xml = simplexml_load_file("allResults.xml");&lt;br /&gt;&lt;br /&gt;// เขียนข้อมูลของอิลิเมนต์ Theater ลงในไฟล์ results.xml&lt;br /&gt;foreach ($xml-&gt;GetTheatersAndMoviesResult-&gt;Theater as $theater) {&lt;br /&gt;  $xml_result .= '&lt;theater&gt;&lt;name&gt;';&lt;br /&gt;  $xml_result .= htmlspecialchars($theater-&gt;Name);&lt;br /&gt;  $xml_result .= '&lt;/name&gt;&lt;address&gt;';&lt;br /&gt;  $xml_result .= htmlspecialchars($theater-&gt;Address);&lt;br /&gt;  $xml_result .= '&lt;/address&gt;&lt;/theater&gt;';&lt;br /&gt; }&lt;br /&gt;$xml_result .="&lt;/theaters&gt;";&lt;br /&gt;&lt;br /&gt;// บันทึกข้อมูลลงไปในไฟล์&lt;br /&gt;$fp = fopen('results.xml','w');&lt;br /&gt;$write = fwrite($fp,$xml_result);&lt;br /&gt;fclose($fp);&lt;br /&gt;&lt;br /&gt;        // เริ่มทำการแปลงโดยสร้างออปเจตก์ DOMDocument และ XSLTProcessor&lt;br /&gt; $doc = new DOMDocument();&lt;br /&gt; $xsl = new XSLTProcessor();&lt;br /&gt;&lt;br /&gt; $xsl_filename = "results.xsl";&lt;br /&gt;&lt;br /&gt;        // โหลดข้อมูลจากไฟล์ XSL&lt;br /&gt; $doc-&gt;load($xsl_filename);&lt;br /&gt;&lt;br /&gt;        // ระบุว่าให้ใช้ XSLTProcessor สำหรับออปเจกต์ DOM ที่สร้างขึ้นมา&lt;br /&gt; $xsl-&gt;importStyleSheet($doc);&lt;br /&gt;&lt;br /&gt; $xml_filename = "results.xml";&lt;br /&gt;        &lt;br /&gt;       // โหลดข้อมูลจากไฟล์ XML&lt;br /&gt; $doc-&gt;load($xml_filename);&lt;br /&gt;&lt;br /&gt;       // แสดงผลที่ได้จากการแปลงข้อมูล&lt;br /&gt; echo $xsl-&gt;transformToXML($doc);&lt;br /&gt;?&amp;gt;&lt;br /&gt;&lt;br /&gt;// ไฟล์ XSL&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_HibF8A8sdMk/SZkJAfAISJI/AAAAAAAAADQ/TRJtzVRYhh0/s1600-h/xslFile.png"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 320px; height: 206px;" src="http://1.bp.blogspot.com/_HibF8A8sdMk/SZkJAfAISJI/AAAAAAAAADQ/TRJtzVRYhh0/s320/xslFile.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5303279940132161682" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3064694297461005708-6042994630202976875?l=thaixmlws.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thaixmlws.blogspot.com/feeds/6042994630202976875/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3064694297461005708&amp;postID=6042994630202976875' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3064694297461005708/posts/default/6042994630202976875'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3064694297461005708/posts/default/6042994630202976875'/><link rel='alternate' type='text/html' href='http://thaixmlws.blogspot.com/2009/02/xml-html-xsl-php.html' title='การแปลงไฟล์ XML ให้เป็น HTML โดยใ้ช้ XSL และ PHP'/><author><name>Kanda Runapogsa Saikaew</name><uri>http://www.blogger.com/profile/17128646874654618541</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_HibF8A8sdMk/SZkGyj-NE0I/AAAAAAAAADA/4DrTJnElGXY/s72-c/allResults.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3064694297461005708.post-4146268850260502955</id><published>2009-02-15T21:56:00.000-08:00</published><updated>2009-02-15T22:14:55.531-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='WSO2'/><category scheme='http://www.blogger.com/atom/ns#' term='เรียกเว็บเซอร์วิส'/><category scheme='http://www.blogger.com/atom/ns#' term='php5'/><category scheme='http://www.blogger.com/atom/ns#' term='callWS'/><category scheme='http://www.blogger.com/atom/ns#' term='WSF'/><category scheme='http://www.blogger.com/atom/ns#' term='webservices'/><title type='text'>การเรียกเว็บเซอร์วิสโดยใช้ PHP</title><content type='html'>เว็บเซอร์วิสหนึ่งที่น่าสนใจในการเรียกใช้คือเว็บเซอร์วิสที่ให้การบริการเกี่ยวกับโรงภาพยนตร์ในอเมริกา ซึ่งคือเว็บเซอร์วิสที่  &lt;a href="http://www.ignyte.com/webservices/ignyte.whatsshowing.webservice/moviefunctions.asmx "&gt;http://www.ignyte.com/webservices/ignyte.whatsshowing.webservice/moviefunctions.asmx &lt;/a&gt; โดยที่มีโอเปอเรชันหนึ่งซึ่งถ้าหากเราให้รหัสไปรษณีย์ (zipcode) และ รัศมีของระยะทางของโรงภาพยนตร์กับเมืองที่มีรหัสไปรษณีย์ดังกล่าว  เว็บเซอร์วิสจะให้รายชื่อของโรงภาพยนตร์&lt;br /&gt;และภาพยนตร์ที่กำลังฉายในโรงภาพยนตร์ดังกล่าว &lt;br /&gt;&lt;br /&gt;ในโค้ดตัวอย่างนี้ สมมุติว่าเราต้องการทราบโรงภาพยนตร์ที่อยู่ในเมืองหรือใกล้เมือง Ann Arbor, Michigan ภายในระยะทาง 1 ไมล์  เราจะใส่ zipcode = 48105 และรัศมี = 1&lt;br /&gt;&lt;br /&gt;&amp;lt;?php&lt;br /&gt;&lt;br /&gt;// โค้ดต่อไปนี้ใช้ wso2 wsf/php ในการเรียกใช้เว็บเซอร์วิส&lt;br /&gt;&lt;br /&gt;// ข้อความที่อยู่ใน SOAP request message ที่จะส่งไปให้เว็บเซอร์วิส&lt;br /&gt;$requestPayloadString = &amp;lt;&amp;lt;&amp;lt;XML&lt;br /&gt;&amp;lt;gettheatersandmovies xmlns="http://www.ignyte.com/whatsshowing"&amp;gt;&lt;br /&gt;      &amp;lt;zipcode&amp;gt;48105&amp;lt;/zipcode&amp;gt;&lt;br /&gt;      &amp;ltradius&amp;gt;1&amp;lt;/radius&amp;gt;&lt;br /&gt;    &amp;lt;/gettheatersandmovies&amp;gt;&lt;br /&gt;XML;&lt;br /&gt;&lt;br /&gt;try {&lt;br /&gt;&lt;br /&gt;    //สร้างออปเจกต์ WSClient&lt;br /&gt;    $client = new WSClient(&lt;br /&gt;        array("to"=&gt;"http://www.ignyte.com/webservices/ignyte.whatsshowing.webservice/moviefunctions.asmx",&lt;br /&gt;                "useSOAP" =&gt; "1.1",&lt;br /&gt;// หากเรียกผ่านเน็ตเวิร์คของมหาวิทยาลัยจะต้องตั้งค่า proxy host และ proxy port&lt;br /&gt;            "proxyHost" =&gt; "202.12.97.116",&lt;br /&gt;        "proxyPort" =&gt; "8088"));&lt;br /&gt;&lt;br /&gt;// สร้างออปเจกต์ WSMessage เพื่อจะใส่ข้อความใน Message และระบุ SOAPAction ของโอเปอเรชัน&lt;br /&gt;// ที่เราต้องการเรียกใช้&lt;br /&gt;        $requestMessage = new WSMessage(&lt;br /&gt;    $requestPayloadString,&lt;br /&gt;    array("action" =&gt; "http://www.ignyte.com/whatsshowing/GetTheatersAndMovies"));&lt;br /&gt;&lt;br /&gt;               &lt;br /&gt;    // ส่งข้อมูลและร้องขอการบริการจากเว็บเซอร์วิส&lt;br /&gt;    $responseMessage = $client-&gt;request($requestMessage);&lt;br /&gt;   &lt;br /&gt;   &lt;br /&gt;&lt;br /&gt;} catch (Exception $e) {&lt;br /&gt;&lt;br /&gt;    if ($e instanceof WSFault) {&lt;br /&gt;        printf("Soap Fault: %s\n", $e-&gt;Reason);&lt;br /&gt;    } else {&lt;br /&gt;        printf("Message = %s\n",$e-&gt;getMessage());&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;// เขียนข้อมูล XML ที่ได้รับลงไปในไฟล์ allResults.xml&lt;br /&gt; $fp = fopen('allResults.xml','w');&lt;br /&gt;        $write = fwrite($fp,$responseMessage-&gt;str);&lt;br /&gt; fclose($fp);&lt;br /&gt;&lt;br /&gt;?&amp;gt;&lt;br /&gt;&lt;br /&gt;รูปข้างล่างนี้แสดงข้อมูลในไฟล์ allResults.xml&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_HibF8A8sdMk/SZkD3YYPlhI/AAAAAAAAAC4/OsxiiJF88_o/s1600-h/allResults.png"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 320px; height: 301px;" src="http://4.bp.blogspot.com/_HibF8A8sdMk/SZkD3YYPlhI/AAAAAAAAAC4/OsxiiJF88_o/s320/allResults.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5303274286177293842" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3064694297461005708-4146268850260502955?l=thaixmlws.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thaixmlws.blogspot.com/feeds/4146268850260502955/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3064694297461005708&amp;postID=4146268850260502955' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3064694297461005708/posts/default/4146268850260502955'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3064694297461005708/posts/default/4146268850260502955'/><link rel='alternate' type='text/html' href='http://thaixmlws.blogspot.com/2009/02/php.html' title='การเรียกเว็บเซอร์วิสโดยใช้ PHP'/><author><name>Kanda Runapogsa Saikaew</name><uri>http://www.blogger.com/profile/17128646874654618541</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_HibF8A8sdMk/SZkD3YYPlhI/AAAAAAAAAC4/OsxiiJF88_o/s72-c/allResults.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3064694297461005708.post-1438227741032359612</id><published>2008-05-05T22:06:00.001-07:00</published><updated>2008-05-05T22:23:27.853-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='firefox'/><category scheme='http://www.blogger.com/atom/ns#' term='conf'/><category scheme='http://www.blogger.com/atom/ns#' term='trimSpaces'/><category scheme='http://www.blogger.com/atom/ns#' term='tomcat5'/><category scheme='http://www.blogger.com/atom/ns#' term='emptyLine'/><category scheme='http://www.blogger.com/atom/ns#' term='parsing'/><category scheme='http://www.blogger.com/atom/ns#' term='xml'/><category scheme='http://www.blogger.com/atom/ns#' term='error'/><category scheme='http://www.blogger.com/atom/ns#' term='servlet'/><title type='text'>การแก้ปัญหา XML Parsing Error: xml declaration not at start of external entity</title><content type='html'>ถ้าหากใช้ไฟล์ JSP เพื่อสร้างไฟล์ XML แล้วพบข้อความดังกล่าวเมื่อใช้เบราว์เซอร์ Firefox&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt; XML Parsing Error: xml declaration not at start of external entity&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt; Line Number 3, Column 1: &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt; ^&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;สาเหตุของปัญหา&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;XML declaration ไม่ใช่เป็นบรรทัดแรกของไฟล์ XML&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(255, 102, 0);"&gt;แนวทางในการแก้ปัญหา&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ลบบรรทัดว่างในไฟล์ XML ก่อนที่จะถึงบรรทัดที่มีส่วนของ XML declaration&lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(255, 102, 0);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;วิธีการแก้ปัญหา&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;1. ในที่นี้สมมุติว่าใช้ Tomcat5 เป็นซอฟต์แวร์ที่รันเซิรฟ์เวอร์  ให้ไปที่ี่ไดเรกทอรี %TOMCAT_HOME%/conf/&lt;br /&gt;&lt;br /&gt;2. เข้าไปดูที่ไฟล์ web.xml แล้วหาอิลิเมนต์ servlet ของ jsp  เช่น&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;pre class="jive-pre"&gt;&lt;code class="jive-code jive-java"&gt;&lt;servlet&gt;&amp;lt;servlet&amp;gt;&lt;br /&gt;&lt;br /&gt;      &amp;lt;servlet-name&amp;gt;jsp&amp;lt;/servlet-name&amp;gt;&lt;br /&gt;&lt;br /&gt;      &amp;lt;servlet-class&amp;gt;org.apache.jasper.servlet.JspServlet&amp;lt;/servlet-class&amp;gt;&lt;br /&gt;&lt;br /&gt;      &amp;lt;init-param&amp;gt;&lt;br /&gt;&lt;br /&gt;          &amp;lt;param-name&amp;gt;fork&amp;lt;/param-name&amp;gt;&lt;br /&gt;&lt;br /&gt;          &amp;lt;param-value&amp;gt;false&amp;lt;/param-value&amp;gt;&lt;br /&gt;&lt;br /&gt;      &amp;lt;/init-param&amp;gt;&lt;br /&gt;&lt;br /&gt;      &amp;lt;init-param&amp;gt;&lt;br /&gt;&lt;br /&gt;          &amp;lt;param-name&amp;gt;xpoweredBy&amp;lt;/param-name&amp;gt;&lt;br /&gt;&lt;br /&gt;          &amp;lt;param-value&amp;gt;false&amp;lt;/param-value&amp;gt;&lt;br /&gt;&lt;br /&gt;      &amp;lt;/init-param&amp;gt;&lt;br /&gt;&lt;br /&gt;      &amp;lt;load-on-startup&amp;gt;3&amp;lt;/load-on-startup&amp;gt;&lt;br /&gt;&lt;br /&gt;  &amp;lt;/servlet&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  &lt;load-on-startup&gt;&lt;/load-on-startup&gt;&lt;br /&gt;&lt;br /&gt;&lt;/servlet&gt;&lt;/code&gt;&lt;/pre&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;3. เพิ่ม อิลิมเนต์ &lt;init-param&gt; เพื่อลบช่องว่างหรือบรรทัดว่างออกไปก่อนในตำแหน่งหลังจากตัวแท็กปิด &lt;/init-param&gt; อันสุดท้าย&lt;br /&gt;&lt;br /&gt;&lt;servlet&gt;&lt;/servlet&gt;&lt;/span&gt;&lt;/span&gt;&amp;lt;servlet&amp;gt;&lt;br /&gt;&lt;br /&gt;       &amp;lt;servlet-name&amp;gt;jsp&amp;lt;/servlet-name&amp;gt;&lt;br /&gt;&lt;br /&gt;       &amp;lt;servlet-class&amp;gt;org.apache.jasper.servlet.JspServlet&amp;lt;/servlet-class&amp;gt;&lt;br /&gt;&lt;br /&gt;       &amp;lt;init-param&amp;gt;&lt;br /&gt;&lt;br /&gt;           &amp;lt;param-name&amp;gt;fork&amp;lt;/param-name&amp;gt;&lt;br /&gt;&lt;br /&gt;           &amp;lt;param-value&amp;gt;false&amp;lt;/param-value&amp;gt;&lt;br /&gt;&lt;br /&gt;       &amp;lt;/init-param&amp;gt;&lt;br /&gt;&lt;br /&gt;       &amp;lt;init-param&amp;gt;&lt;br /&gt;&lt;br /&gt;           &amp;lt;param-name&amp;gt;xpoweredBy&amp;lt;/param-name&amp;gt;&lt;br /&gt;&lt;br /&gt;           &amp;lt;param-value&amp;gt;false&amp;lt;/param-value&amp;gt;&lt;br /&gt;&lt;br /&gt;       &amp;lt;/init-param&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;       &amp;lt;init-param&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;            &amp;lt;param-name&amp;gt;trimSpaces&amp;lt;/param-name&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;            &amp;lt;param-value&amp;gt;true&amp;lt;/param-value&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;        &amp;lt;/init-param&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;       &amp;lt;load-on-startup&amp;gt;3&amp;lt;/load-on-startup&amp;gt;&lt;br /&gt;&lt;br /&gt;   &amp;lt;/servlet&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="jive-pre"&gt;&lt;code class="jive-code jive-java"&gt;       &lt;/code&gt;&lt;/pre&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;servlet&gt;      &lt;servlet-name&gt;&lt;/servlet-name&gt;&lt;/servlet&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;4. ปิดและเปิด Tomcat เซิร์ฟเวอร์ใหม่&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;อ้างอิง&lt;/span&gt;&lt;br /&gt;&lt;a href="http://forum.java.sun.com/thread.jspa?threadID=556549&amp;amp;messageID=2728991"&gt;http://forum.java.sun.com/thread.jspa?threadID=556549&amp;amp;messageID=2728991&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3064694297461005708-1438227741032359612?l=thaixmlws.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thaixmlws.blogspot.com/feeds/1438227741032359612/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3064694297461005708&amp;postID=1438227741032359612' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3064694297461005708/posts/default/1438227741032359612'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3064694297461005708/posts/default/1438227741032359612'/><link rel='alternate' type='text/html' href='http://thaixmlws.blogspot.com/2008/05/xml-parsing-error-xml-declaration-not.html' title='การแก้ปัญหา XML Parsing Error: xml declaration not at start of external entity'/><author><name>Kanda Runapogsa Saikaew</name><uri>http://www.blogger.com/profile/17128646874654618541</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3064694297461005708.post-5987418089892619740</id><published>2008-04-26T19:52:00.000-07:00</published><updated>2008-05-05T22:15:57.887-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='xml'/><category scheme='http://www.blogger.com/atom/ns#' term='transform'/><category scheme='http://www.blogger.com/atom/ns#' term='xsl'/><title type='text'>การแปลงข้อมูล XML ให้อยู่ในรูปแบบที่ดูง่ายด้วย XSL และ PHP</title><content type='html'>บ่อยครั้งที่ข้อมูลที่เรามีอยู่ในรูปแบบ XML ซึ่งอาจจะได้มาจากการเรียกใช้เว็บเซอร์วิส หรือรูปแบบมาตรฐานของข้อมูลที่เราได้รับมา แต่เรามักจะพบว่าการอ่านข้อมูล XML นั้นไม่ค่อยง่ายเพราะมีแต่ตัวอักษร และหลายครั้งที่เราต้องการแปลงข้อมูลเหล่าีนี้อยู่ในรูปแบบของเว็บเพจเพื่อแ สดงให้คนอื่นดูด้วย&lt;br /&gt;&lt;br /&gt;เราสามารถแปลงข้อมูล XML ให้อยู่ในรูปแบบที่ดูง่ายขึ้นด้วย XSL และ PHP&lt;br /&gt;&lt;br /&gt;ตัวอย่างเช่น หากเรามีไฟล์ allResults.xml ที่เราได้รับจากการเรียก Yahoo Search ด้วยคำสำคัญ "Kanda Saikaew" ซึ่งถ้าหากเราดูแล้วจะพบว่ามีข้อมูลที่ซ้อนกันหลายชั้นและดูค่อนข้างจะสลับซับซ้อนดังแสดงในรูป&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;img src="http://gear.kku.ac.th/%7Ekrunapon/tutorials/php5/xsl/InitXML.png" border="0" height="725" width="1012" /&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;ถ้าหากเราต้องการเพียงแ่ค่ชื่อของเว็บเพจและลิงก์ไปที่เว็บเพจนั้นเราก็สามาร ถทำได้โดยการคัดกรองเอาแต่ข้อมูลที่เราต้องการก่อนโดยการเขียนโปรแกรม XML Parser ด้วยภาษา PHP ดังนี้&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 51, 102);"&gt;&amp;lt;?php&lt;br /&gt;&lt;br /&gt;$xml = simplexml_load_file('allResults.xml');&lt;br /&gt;&lt;br /&gt;$xml_result = "&amp;lt;?xml version='1.0'?&amp;gt;&amp;lt;results&amp;gt;";&lt;br /&gt;&lt;br /&gt;$xml_result .="&amp;lt;name&amp;gt;Kanda Saikaew&amp;lt;/name&amp;gt;";&lt;br /&gt;&lt;br /&gt;foreach ($xml-&amp;gt;Result as $result) {&lt;br /&gt;&lt;br /&gt;$xml_result .= '&amp;lt;result&amp;gt;&amp;lt;title&amp;gt;';&lt;br /&gt;&lt;br /&gt;$xml_result .= htmlspecialchars($result-&amp;gt;Title);&lt;br /&gt;&lt;br /&gt;$xml_result .= '&amp;lt;/title&amp;gt;&amp;lt;url&amp;gt;';&lt;br /&gt;&lt;br /&gt;$xml_result .= htmlspecialchars($result-&amp;gt;Url);&lt;br /&gt;&lt;br /&gt;$xml_result .= '&amp;lt;/url&amp;gt;&amp;lt;/result&amp;gt;';&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;$xml_result .= "&amp;lt;/results&amp;gt;";&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;$fp = fopen('results.xml','w');&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;$write = fwrite($fp,$xml_result);&lt;br /&gt;&lt;br /&gt;fclose($fp);&lt;br /&gt;&lt;br /&gt;?&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;เราก็จะได้ไฟล์ &lt;a href="http://gear.kku.ac.th/%7Ekrunapon/tutorials/php5/xsl/results.xml"&gt;results.xml&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;ซึ่งดูง่ายกว่าไฟล์แรกที่เรามี แต่ถ้าหากเราต้องการทำให้เป็นตารางในรูปแบบของเว็บเพจ เราก็จะเขียนไฟล์ results.xsl &lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 51, 102);"&gt;&amp;lt;?xml version='1.0'?&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;xsl:stylesheet&lt;br /&gt;&lt;br /&gt;xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version='1.0'&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;xsl:output method="html"/&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;xsl:template match="/results"&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;html&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;head&amp;gt;&amp;lt;title&amp;gt;Search Result by Yahoo&amp;lt;/title&amp;gt;&amp;lt;/head&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;body&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;h1&amp;gt;Search Result for &amp;lt;xsl:value-of select="name"/&amp;gt;&amp;lt;/h1&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;table border="1"&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;Title&amp;lt;/th&amp;gt;&amp;lt;th&amp;gt;Url&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;xsl:for-each select="result"&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;xsl:value-of select="title"/&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;td&amp;gt;&amp;lt;a href="{url}"&amp;gt;&amp;lt;xsl:value-of select="url"/&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/table&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/body&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/xsl:stylesheet&amp;gt; &lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;และเขียนโค้ด PHP เพื่ออ่านและแปลงข้อมูลจาก results.xml โดยอาศัยรูปแบบของการแสดงข้อมูลที่ระบุไว้ใน results.xsl ให้เป็น results.html&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 51, 102);"&gt;&amp;lt;?php&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;$doc = new DOMDocument();&lt;br /&gt;&lt;br /&gt;$xsl = new XSLTProcessor();&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;$xsl_filename = "results.xsl";&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;$doc-&amp;gt;load($xsl_filename);&lt;br /&gt;&lt;br /&gt;$xsl-&amp;gt;importStyleSheet($doc);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;$xml_filename = "results.xml";&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;$doc-&amp;gt;load($xml_filename);&lt;br /&gt;&lt;br /&gt;echo $xsl-&amp;gt;transformToXML($doc);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;?&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;แล้วเราก็จะได้ผลลัพธ์ที่ดูง่ายดังแสดงในรูปนี้&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;img src="http://gear.kku.ac.th/%7Ekrunapon/tutorials/php5/xsl/FinalResult.png" border="0" height="573" width="996" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3064694297461005708-5987418089892619740?l=thaixmlws.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thaixmlws.blogspot.com/feeds/5987418089892619740/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3064694297461005708&amp;postID=5987418089892619740' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3064694297461005708/posts/default/5987418089892619740'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3064694297461005708/posts/default/5987418089892619740'/><link rel='alternate' type='text/html' href='http://thaixmlws.blogspot.com/2008/04/xml-xsl-php.html' title='การแปลงข้อมูล XML ให้อยู่ในรูปแบบที่ดูง่ายด้วย XSL และ PHP'/><author><name>Kanda Runapogsa Saikaew</name><uri>http://www.blogger.com/profile/17128646874654618541</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3064694297461005708.post-7492089547819772206</id><published>2008-04-20T06:36:00.000-07:00</published><updated>2008-04-20T07:09:14.104-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ปตท'/><category scheme='http://www.blogger.com/atom/ns#' term='thai'/><category scheme='http://www.blogger.com/atom/ns#' term='SoapClient'/><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='เว็บเซอร์วิส'/><category scheme='http://www.blogger.com/atom/ns#' term='เรียกเว็บเซอร์วิส'/><category scheme='http://www.blogger.com/atom/ns#' term='php5'/><category scheme='http://www.blogger.com/atom/ns#' term='C#.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='PTTInfo'/><category scheme='http://www.blogger.com/atom/ns#' term='callWS'/><category scheme='http://www.blogger.com/atom/ns#' term='webservices'/><title type='text'>การใช้ PHP5 เรียกเว็บเซอร์วิสแบบ SOAP</title><content type='html'>ภาษา PHP เป็นภาษาที่เหมาะสมในการพัฒนาเว็บแอปพลิเคชัน เนื่องจากเป็นภาษาที่ง่าย เรียนรู้ได้เร็ว และสามารถนำมาใช้ได้ฟรี   การเรียกใช้เว็บเซอร์วิสด้วยภาษา PHP จึงเป็นที่นิยม ภาษา PHP เวอร์ชันปัจจุบันคือ PHP5  ซึ่งมีความสามารถในการสนับสนุนการเรียกใช้เว็บเซอร์วิสในตัวโดยไม่ต้องดาวน์ โหลดเครื่องมืออะไรเพิ่มเติม  ซึ่งจะทำให้ง่ายกว่าการที่ต้องไปดาวน์โหลดเครื่องมืออย่างเช่น &lt;a href="http://sourceforge.net/projects/nusoap/"&gt;NuSOAP&lt;/a&gt; ซึ่ง อัปเดตล่าสุดในปี ค.ศ. 2005 อีกทั้งไม่ได้มีกลุ่มผู้ใช้อย่างมากเหมือนกับ SOAP extension ของ PHP5 &lt;p&gt; ใน PHP5  มี SOAP extension ที่ทำให้การเรียกใช้เว็บเซอร์วิสแบบ SOAP ง่ายขึ้นโดยการใช้คลาส SoapClient   &lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;ขั้นตอนวิธีการมีดังต่อไปนี้&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;1)  หากเราต้องการเรียกใ้ช้เว็บเซอร์็วิสแบบ SOAP ใดเราก็ต้องรู้ที่อยู่ของเอกสาร WSDL ของเว็บเซอร์วิสนั้นก่อน   เช่น&lt;/p&gt;&lt;p&gt;&lt;span style="color: rgb(153, 51, 102);"&gt;$client = new SoapClient($wsdl);&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ถ้าหากว่าพบปัญหา &lt;span style="color: rgb(255, 0, 0);"&gt;Class 'SoapClient' not found  &lt;span style="color: rgb(0, 0, 0);"&gt;ให้เพิ่มบรรทัดนี้ในไฟล์ php.ini&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 0, 153);"&gt;extension=php_soap.dll&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color: rgb(51, 0, 153);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ซึ่งถ้าหากใช้ระบบปฏิบัติการ Windows ไฟล์ php.ini อยู่ที่ไดเรกทอรี c:\windows&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;2)  จากนั้นใช้ฟังก์ชัน _soapCall เพื่อเรียกใช้เมธอดที่เราต้องการโดยที่จะต้องระบุอินพุตพารามิเตอร์ในรูปแบบอาร์เรย์ เช่น&lt;/p&gt;&lt;p&gt;&lt;span style="color: rgb(153, 51, 102);"&gt;$result = $client-&gt;__soapCall($methodName, array($methodArguments)); &lt;/span&gt;&lt;/p&gt;&lt;p&gt;3)  ถ้าหากเราเรียกใช้เว็บเซอร์วิสที่พัฒนาโดยใช้ Microsoft .NET จะต้องมีการระบุ SOAP Action  ในอาร์กิวเมนต์ของฟังก์ชัน __soapCall  เช่น&lt;/p&gt;&lt;p&gt;&lt;span style="color: rgb(153, 51, 102);"&gt;$result = $client-&gt;__soapCall($methodName, array($methodArguments), array('soapaction' =&gt; $soapAction));&lt;/span&gt;&lt;/p&gt;&lt;p&gt;4)  ถ้าหากเราเรียกใช้เว็บเซอร์วิสที่พัฒนาโดย  Microsoft .NET จะได้ผลลัพธ์ที่อยู่ในรูปออปเจตก์ที่ประกอบด้วยอิลิเมนต์ที่มีชื่อตรงกับอิล ิเมนต์เอาต์พุตตามที่ระบุในเอกสาร WSDL เช่น&lt;/p&gt;&lt;p&gt;&lt;span style="color: rgb(153, 51, 102);"&gt;echo $result-&gt;outputElemName;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;เราลองมาดูตัวอย่างของการเรียกใช้เว็บเซอร์วิส ปตท (http://www.pttplc.com/pttinfo.asmx) ซึ่งพัฒนาเป็นเว็บเซอร์วิสแบบ SOAP โดยใช้ C#.NET ด้วยโปรแกรมที่เขียนโดยภาษา PHP ดังนี้&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;?php&lt;br /&gt;&lt;br /&gt;// ที่อยู่ของเอกสาร WSDL ของเว็บเซอร์วิส ปตท");&lt;br /&gt;$wsdl = 'http://www.pttplc.com/pttinfo.asmx?WSDL';&lt;br /&gt;&lt;br /&gt;// สร้างออปเจกต์ SoapClient เพื่อเรียกใช้เว็บเซอร์วิส&lt;br /&gt;$client = new SoapClient($wsdl);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&lt;br /&gt;&lt;br /&gt;// เมธอดที่ต้องการเรียกใช้ CurrentOilPrice&lt;br /&gt;$methodName = 'CurrentOilPrice'; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&lt;br /&gt;&lt;br /&gt;// อินพุตพารามิเตอร์ของเมธอด CurrentOilPrice คือ&lt;br /&gt;// Language ซึ่งเราตั้งค่าให้เป็น TH ถ้าหากต้องการแสดงผลเป็นภาษาไทย&lt;br /&gt;$params = array('Language'=&gt;'TH');&lt;br /&gt;&lt;br /&gt;// ระบุค่าของ SOAP Action URI&lt;br /&gt;$soapAction = 'http://www.pttplc.com/ptt_webservice/CurrentOilPrice';&lt;br /&gt;&lt;br /&gt;// ใช้ฟังก์ชัน _soapCall ในการเรียกเมธอดที่ระบุ&lt;br /&gt;// ต้องระบุพารามิเตอร์และ SOAP Action&lt;br /&gt;$objectResult = $client-&gt;__soapCall($methodName, array('parameters' =&gt; $params), array('soapaction' =&gt; $soapAction));&lt;br /&gt;&lt;br /&gt;// จะต้องดูค่าฟิลด์ที่ชื่อตรงกับชื่อของอิลิเมนต์ที่ระบุใน&lt;br /&gt;// Output Message ซึ่งในที่นี้ก็คือ&lt;br /&gt;// CurrentOilPriceResult&lt;br /&gt;echo $objectResult-&gt;CurrentOilPriceResult;&lt;br /&gt;?&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;ซึ่งเราก็จะได้ผลลัพธ์ดังรูปที่แสดงต่อไปนี้&lt;/p&gt;&lt;p&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_HibF8A8sdMk/SAtIVkfVXgI/AAAAAAAAABE/vU9-A9f04B8/s1600-h/callPTTWSThaiResult.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://1.bp.blogspot.com/_HibF8A8sdMk/SAtIVkfVXgI/AAAAAAAAABE/vU9-A9f04B8/s320/callPTTWSThaiResult.jpg" alt="" id="BLOGGER_PHOTO_ID_5191322530884181506" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;br /&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;br /&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;br /&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;br /&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;br /&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;br /&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;br /&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;อ้างอิงจาก&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;PHP: SOAP - Manual  &lt;a href="http://th.php.net/soap"&gt;http://th.php.net/soap&lt;/a&gt;&lt;/p&gt;&lt;p&gt;PHP: SoapClient-&gt;__soapCall Manual &lt;a href="http://th.php.net/soap_soapclient_soapcall"&gt;http://th.php.net/soap_soapclient_soapcall&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;This blog entry was modified from the blog entry by the same author which is at &lt;a href="http://gotoknow.org/blog/xmlws/161546"&gt;http://gotoknow.org/blog/xmlws/161546&lt;/a&gt;&lt;br /&gt;&lt;span style="text-decoration: underline;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3064694297461005708-7492089547819772206?l=thaixmlws.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thaixmlws.blogspot.com/feeds/7492089547819772206/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3064694297461005708&amp;postID=7492089547819772206' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3064694297461005708/posts/default/7492089547819772206'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3064694297461005708/posts/default/7492089547819772206'/><link rel='alternate' type='text/html' href='http://thaixmlws.blogspot.com/2008/04/php5-soap.html' title='การใช้ PHP5 เรียกเว็บเซอร์วิสแบบ SOAP'/><author><name>Kanda Runapogsa Saikaew</name><uri>http://www.blogger.com/profile/17128646874654618541</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_HibF8A8sdMk/SAtIVkfVXgI/AAAAAAAAABE/vU9-A9f04B8/s72-c/callPTTWSThaiResult.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3064694297461005708.post-6382542176361379741</id><published>2008-04-16T23:53:00.001-07:00</published><updated>2008-04-16T23:53:46.084-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='WSO2'/><category scheme='http://www.blogger.com/atom/ns#' term='xml'/><category scheme='http://www.blogger.com/atom/ns#' term='WSF'/><category scheme='http://www.blogger.com/atom/ns#' term='webservices'/><title type='text'>การติดตั้ง WSO2 WSF/PHP บน Windows</title><content type='html'>&lt;p&gt;&lt;b&gt;ก่อนที่เราจะติดตั้ง WSO2 WSF/PHP เราจะต้องใช้ PHP เวอร์ชัน 5.2.x ขึ้นไป &lt;/b&gt; หากต้องการอัปเกรดเวอร์ชัน PHP ควรจะคัดลอกไฟล์ library ซึ่งขึ้นต้นด้วย lib*.dll ของโฟลเดอร์ php ไปไว้ที่โฟลเดอร์ c:\windows\system32 ด้วย &lt;/p&gt; &lt;p&gt; 1) ติดตั้งไลบราลี ที่ WSF จะต้องใช้ &lt;/p&gt; &lt;p&gt; 1.1)  ดาวน์โหลด libxml จาก  &lt;a href="http://www.zlatkovic.com/pub/libxml/"&gt;http://www.zlatkovic.com/pub/libxml &lt;/a&gt; &lt;/p&gt; &lt;p&gt;จ ากนั้นให้ unzip ไฟล์ที่ดาวน์โหลดมา และให้คัดลอกไฟล์ libxml2.dll ซึ่งอยู่ในไดเรกทอรี bin ให้ไปไว้ที่ไดเรกทอรีี์ที่อยู่ใน PATH environment &lt;/p&gt; &lt;p&gt; 1.2)  ดาวน์โหลด iconv จาก &lt;a href="http://www.zlatkovic.com/pub/libxml/"&gt; http://www.zlatkovic.com/pub/libxml/&lt;/a&gt; &lt;/p&gt; &lt;p&gt; จากนั้นให้ unzip ไฟล์ที่ดาวน์โหลดมา  และให้คัดลอกไฟล์  iconv.dll&lt;br /&gt;ซึ่งอยู่ในไดเรกทอรี์ bin ให้ไปไว้ที่ไดเรกทอรีที่อยู่ใน PATH environment &lt;/p&gt; &lt;p&gt; 1.3)  extension open_ssl  ซึ่งมีอยู่แล้วใน  PHP เวอร์ชัน 5.2.x  ขึ้นไป &lt;/p&gt; &lt;p&gt; วิธีการติดตั้ง extension ก็ขอให้ดูที่ &lt;a href="http://campus.en.kku.ac.th/node/kanda/%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%95%E0%B8%B4%E0%B8%94%E0%B8%95%E0%B8%B1%E0%B9%89%E0%B8%87-php-extension-%E0%B8%9A%E0%B8%99%E0%B8%A3%E0%B8%B0%E0%B8%9A%E0%B8%9A-windows"&gt;http://campus.en.kku.ac.th/node/kanda/%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%95%E0%B8%B4%E0%B8%94%E0%B8%95%E0%B8%B1%E0%B9%89%E0%B8%87-php-extension-%E0%B8%9A%E0%B8%99%E0%B8%A3%E0%B8%B0%E0%B8%9A%E0%B8%9A-windows&lt;/a&gt; &lt;/p&gt; &lt;p&gt; 2)  ดาวน์โหลดและติดตั้ง WSF &lt;/p&gt; &lt;p&gt; 2.1) ดาวน์โหลดเวอร์ชันไบนารีได้ที่ &lt;a href="http://wso2.org/downloads/wsf/php#binary-php"&gt;http://wso2.org/downloads/wsf/php#binary-php &lt;/a&gt;&lt;br /&gt;2.2) ทำการ unzip ไฟล์ที่ดาวน์โหลดมาซึ่งเราก็จะได้ไฟล์และไดเรกทอรีที่มีโครงสร้างต่อไปนี้ &lt;/p&gt; &lt;p&gt; wso2-wsf-php-bin-1.2.0-win32 &lt;/p&gt; &lt;p&gt; | +-- wsf_c &lt;/p&gt; &lt;p&gt; | +-- wsf.dll &lt;/p&gt; &lt;p&gt; | +-- docs &lt;/p&gt; &lt;p&gt; | +-- scripts &lt;/p&gt; &lt;p&gt; | +-- samples &lt;/p&gt; &lt;p&gt; ในที่นี้สมมุติว่าเรา unzip ไฟล์และเปลี่ยนชื่อไดเรกทอรีจาก wso2-wsf-php-bin-1.2.0-win32 เป็น wso-1.2 และเก็บไว้ที่ f:\178375\tools\wso-1.2 &lt;/p&gt; &lt;p&gt;   &lt;/p&gt; &lt;p&gt; 2.3) ทำการติดตั้ง extension wsf โดยการคัดลอกไฟล์ wsf.dll ไปไว้ในไดเรกทอรีที่อยู่ใน PATH environment และอยู่ใน c:\php5\ext &lt;/p&gt; &lt;p&gt; และเพิ่มบรรทัด &lt;/p&gt; &lt;p&gt; php_extension=wsf.dll &lt;/p&gt; &lt;p&gt; ในไฟล์ php.ini &lt;/p&gt; &lt;p&gt; นอกจากนี้ต้องเพิ่ม extension xsl โดยการเปลี่ยนจาก &lt;/p&gt; &lt;p&gt; ;php_extension=php_xsl.dll &lt;/p&gt; &lt;p&gt; เป็น &lt;/p&gt; &lt;p&gt; php_extension=php_xsl.dll &lt;/p&gt; &lt;p&gt; 2.4) ทำการเพิ่มชื่อไดเรกทอรี wso2-wsf-php-bin-1.2.0-win32\wsf_c\lib ไว้ใน PATH environment &lt;/p&gt; &lt;p&gt; 2.5) ทำการเพิ่มบรรทัดต่อไปนี้ในไฟล์ php.ini &lt;/p&gt; &lt;p&gt; ;wsf &lt;/p&gt; &lt;p&gt; wsf.home="&lt;path_to_extract_folder&gt;\wsf_c" &lt;/path_to_extract_folder&gt;&lt;/p&gt; &lt;p&gt; wsf.log_path="&lt;path&gt;\wsf_c\logs" &lt;/path&gt;&lt;/p&gt; &lt;p&gt; wsf.log_level=3 &lt;/p&gt; &lt;p&gt; อย่างเช่นในการทดลองนี้ก็จะเป็น &lt;/p&gt; &lt;p&gt; ;wsf &lt;/p&gt; &lt;p&gt; wsf.home="f:\178375\tools\wso-1.2\wsf_c"&lt;br /&gt;wsf.log_path="f:\178375\tools\wso-1.2\wsf_c\logs"&lt;br /&gt;wsf.log_level=3 &lt;/p&gt; &lt;p&gt;2.7) ทำการเพิ่มไดเรกทอรีที่ PHP จะค้นหาไฟล์ include ที่เราจะอ้างอิงถึง ซึ่งจะต้องเพิ่มเพื่อทำให้ WSF/PHP สร้างและทำให้เราเห็นไฟล์ WSDL &lt;/p&gt; &lt;p&gt; include_path = ".;f:\178375\tools\wso-1.2\scripts" &lt;/p&gt; &lt;p&gt;2.8) ทำการทดสอบว่าตอนนี้เรามี extension WSF แล้วเหรอยังโดยการสร้างไฟล์ PHP ที่มีโค้ด หากเราติดตั้ง WSF สำเร็จ เราจะเห็นส่วนหนึ่งของผลรันดังรูปที่ 1 &lt;/p&gt; &lt;p&gt; &lt;img src="http://gear.kku.ac.th/%7Ekrunapon/courses/178375/exercises/phpws/images/wso2php/checkUsingPHPInfo.png" alt="wsf extension " title="WSF Extension Installed" height="420" width="724" /&gt; &lt;/p&gt; &lt;p&gt;   &lt;/p&gt; &lt;p&gt;&lt;span style="font-weight: bold;"&gt; อ้างอิงจาก&lt;/span&gt; &lt;/p&gt; &lt;p&gt; &lt;a href="http://wso2.org/project/wsf/php/1.2.0/docs/manual.html"&gt;http://wso2.org/project/wsf/php/1.2.0/docs/manual.html&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;This article was also posted by the same author at&lt;br /&gt;&lt;a href="http://gotoknow.org/blog/xmlws/160231"&gt;http://gotoknow.org/blog/xmlws/160231&lt;/a&gt; &lt;a href="http://campus.en.kku.ac.th/node/kanda/%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%95%E0%B8%B4%E0%B8%94%E0%B8%95%E0%B8%B1%E0%B9%89%E0%B8%87-wso2-wsfphp-%E0%B8%9A%E0%B8%99-windows"&gt;http://campus.en.kku.ac.th/node/kanda/%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%95%E0%B8%B4%E0%B8%94%E0%B8%95%E0%B8%B1%E0%B9%89%E0%B8%87-wso2-wsfphp-%E0%B8%9A%E0%B8%99-windows&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3064694297461005708-6382542176361379741?l=thaixmlws.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thaixmlws.blogspot.com/feeds/6382542176361379741/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3064694297461005708&amp;postID=6382542176361379741' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3064694297461005708/posts/default/6382542176361379741'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3064694297461005708/posts/default/6382542176361379741'/><link rel='alternate' type='text/html' href='http://thaixmlws.blogspot.com/2008/04/wso2-wsfphp-windows.html' title='การติดตั้ง WSO2 WSF/PHP บน Windows'/><author><name>Kanda Runapogsa Saikaew</name><uri>http://www.blogger.com/profile/17128646874654618541</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
