ผู้แต่ง: Ma Xiaoning
XML (Extensible Markup Language) อาจดูเหมือนมาตรฐาน w3c บางประเภท ซึ่งขณะนี้ยังไม่มีผลกระทบในทางปฏิบัติ และถึงแม้จะมีประโยชน์ในอนาคต ก็คงต้องใช้เวลานาน แต่จริงๆแล้วมันก็ถูกใช้ไปแล้ว ดังนั้นอย่ารอจนกว่า XML จะถูกเพิ่มลงในโปรแกรมแก้ไข HTML ที่คุณชื่นชอบเพื่อเริ่มใช้งาน มันสามารถแก้ไขปัญหาภายในต่างๆและปัญหาระบบ b2b ได้แล้ว
ที่ sparks.com เราใช้ xml เพื่อสร้างมาตรฐานการแสดงข้อมูลระหว่างระบบต่างๆ ตั้งแต่ออบเจ็กต์ Java ไปจนถึงการแสดงข้อมูล html
โดยเฉพาะอย่างยิ่ง เราพบว่าข้อมูลสามารถแบ่งปันและจัดการได้ง่ายขึ้นเมื่อได้รับมาตรฐานในโครงสร้าง XML ขั้นพื้นฐาน ในกระบวนการนี้ เราได้ค้นพบวิธีที่มีประสิทธิภาพมากมายในการใช้ xml ข้อมูลต่อไปนี้จะอธิบายรายละเอียดการสมัครปัจจุบันของเรา
ทำให้เป็นมาตรฐาน ก่อนที่จะใช้ XML ให้สร้างรูปแบบข้อมูล XML ที่แตกต่างจากข้อมูลที่คุณต้องการใช้
สร้าง xml แบบไดนามิก
การสร้าง html จากฐานข้อมูลไม่ใช่เรื่องใหม่ แต่การสร้าง xml นั้นเป็นเช่นนั้น ที่นี่เราจะแนะนำขั้นตอนการสร้างเฉพาะ
การใช้ xsl เป็นภาษาเทมเพลต
XSL (Extensible Stylesheet Language) เป็นวิธีที่ดีในการกำหนดรูปแบบการแสดงข้อมูล XML และจะมีประสิทธิภาพมากกว่าหากเขียนเป็นเทมเพลตคงที่หลายรายการ
สร้าง html
xml บวก xsl เท่ากับ html นี่อาจฟังดูไม่ถูกต้อง แต่หน้า html ของเราที่ผู้ใช้เห็นนั้นจริงๆ แล้วเป็นผลมาจาก xml และ xsl
1.
ความสามารถในการกำหนดมาตรฐาน XML มาจากความยืดหยุ่น แต่น่าเสียดายที่บางครั้งมันยืดหยุ่นมากจนคุณเหลือหน้าว่างและสงสัยว่าจะแก้ปัญหาอย่างไร
ในโครงการ XML ใดๆ ขั้นตอนแรกคือการสร้างรูปแบบข้อมูลมาตรฐาน ในการดำเนินการนี้ คุณจะต้องตัดสินใจดังต่อไปนี้:
• ข้อมูลใดบ้างที่จะเกี่ยวข้อง?
• จะใช้ dtd หรือไม่ (คำจำกัดความประเภทไฟล์)
• ไม่ว่าคุณต้องการใช้ DOM (Document Object Model) หรือ SAX (Siimpled API for XML) เพื่อแยกวิเคราะห์
และกำหนดข้อมูล:
เนื่องจากไม่มีรูปแบบ XML มาตรฐาน นักพัฒนาจึงมีอิสระในการพัฒนารูปแบบของตนเอง อย่างไรก็ตาม หากแอปพลิเคชันเดียวรู้จักรูปแบบของคุณ คุณก็สามารถเรียกใช้แอปพลิเคชันนั้นเพื่อใช้รูปแบบนั้นได้เท่านั้น คงจะมีประโยชน์มากกว่าถ้ามีโปรแกรมอื่นๆ ที่สามารถอ่านรูปแบบ xml ของคุณได้ หากมีการแก้ไขรูปแบบ XML ระบบที่ใช้รูปแบบดังกล่าวอาจจำเป็นต้องแก้ไขด้วย ดังนั้นคุณควรสร้างรูปแบบให้สมบูรณ์ที่สุด เนื่องจากระบบส่วนใหญ่เพิกเฉยต่อแท็กที่พวกเขาไม่รู้จัก วิธีที่ปลอดภัยที่สุดในการเปลี่ยนรูปแบบของ XML คือการเพิ่มแท็ก แทนที่จะแก้ไขแท็ก
คลิกที่นี่เพื่อดูตัวอย่างรูปแบบข้อมูล xml
ที่ sparks.com เราได้ดูข้อมูลผลิตภัณฑ์ทั้งหมดที่จำเป็นสำหรับการนำเสนอผลิตภัณฑ์ต่างๆ แม้ว่าจะไม่ใช่ทุกหน้าที่ใช้ข้อมูลทั้งหมด แต่เราก็ได้พัฒนารูปแบบข้อมูล xml ที่สมบูรณ์มากซึ่งเหมาะสำหรับข้อมูลทั้งหมด ตัวอย่างเช่น หน้ารายละเอียดผลิตภัณฑ์ของเราจะแสดงข้อมูลมากกว่าหน้าเรียกดูผลิตภัณฑ์ของเรา อย่างไรก็ตาม เรายังคงใช้รูปแบบข้อมูลเดียวกันในทั้งสองกรณี เนื่องจากเทมเพลต xsl ของแต่ละหน้าใช้เฉพาะฟิลด์ที่ต้องการเท่านั้น
ไม่ว่าจะใช้ dtd
ที่ sparks.com เราใช้ xml ที่มีการจัดการอย่างดี แทนที่จะใช้แค่ xml ที่ถูกต้อง เนื่องจากแบบแรกไม่จำเป็นต้องใช้ dtd DTD เพิ่มชั้นของการประมวลผลระหว่างการคลิกและการดูเพจของผู้ใช้ เราพบว่าเลเยอร์นี้ต้องการการประมวลผลมากเกินไป แน่นอนว่า การใช้ DTD เมื่อสื่อสารกับบริษัทอื่นในรูปแบบ XML ยังเป็นเรื่องดี เพราะ dtd สามารถมั่นใจได้ว่าโครงสร้างข้อมูลถูกต้องเมื่อส่งและรับ
การเลือก Parsing Engine ขณะนี้ มีเอ็นจิ้นการแยกวิเคราะห์หลายตัวที่สามารถใช้ได้ สิ่งที่คุณเลือกนั้นขึ้นอยู่กับความต้องการใช้งานของคุณเกือบทั้งหมด หากคุณตัดสินใจที่จะใช้ DTD กลไกการแยกวิเคราะห์จะต้องสามารถเปิดใช้งาน XML ของคุณเพื่อรับการตรวจสอบโดย DTD คุณสามารถแยกการตรวจสอบออกเป็นกระบวนการแยกต่างหากได้ แต่นั่นจะส่งผลกระทบต่อประสิทธิภาพการทำงาน
Sax และ dom เป็นโมเดลการแยกวิเคราะห์พื้นฐานสองแบบ SAX เป็นไปตามเหตุการณ์ ดังนั้นเมื่อมีการแยกวิเคราะห์ xml เหตุการณ์จะถูกส่งไปยังเอ็นจิ้น ถัดไป เหตุการณ์จะถูกซิงโครไนซ์กับไฟล์เอาต์พุต กลไกการแยกวิเคราะห์ DOM สร้างโครงสร้างต้นไม้แบบลำดับชั้นสำหรับข้อมูล XML แบบไดนามิกและสไตล์ชีต XSL การเข้าถึงแผนผัง DOM แบบสุ่มทำให้สามารถจัดเตรียมข้อมูล XML เสมือนว่าถูกกำหนดโดยสไตล์ชีต XSL การถกเถียงเกี่ยวกับโมเดล SAX มุ่งเน้นไปที่การลดหน่วยความจำมากเกินไปของโครงสร้าง DOM และเร่งเวลาการแยกวิเคราะห์ของสไตล์ชีต XSL
อย่างไรก็ตาม เราพบว่าระบบจำนวนมากที่ใช้แซ็กโซโฟนไม่ได้ใช้งานอย่างเต็มประสิทธิภาพ ระบบเหล่านี้ใช้เพื่อสร้างโครงสร้าง DOM และส่งเหตุการณ์ผ่านโครงสร้าง DOM ด้วยแนวทางนี้ DOM จะต้องถูกสร้างขึ้นจากสไตล์ชีตก่อนการประมวลผล XML ใดๆ ดังนั้นประสิทธิภาพจะลดลง
2. สร้างไดนามิก xml
เมื่อสร้างรูปแบบ xml แล้ว เราจำเป็นต้องมีวิธีการย้ายจากฐานข้อมูลแบบไดนามิก
การสร้างเอกสาร xml นั้นค่อนข้างง่ายเนื่องจากต้องใช้เพียงระบบที่สามารถจัดการสตริงได้ เราสร้างระบบโดยใช้ java servlet, เซิร์ฟเวอร์ javabean ขององค์กร, jdbc และ rdbms (ระบบจัดการฐานข้อมูลเชิงสัมพันธ์)
• servlet จัดการคำขอข้อมูลผลิตภัณฑ์โดยการลดภาระงานการสร้างเอกสาร xml ไปยัง javabean ขององค์กร (ejb)
• ejb ใช้ jdbc เพื่อค้นหารายละเอียดผลิตภัณฑ์ที่ต้องการจากฐานข้อมูล
• ejb สร้างไฟล์ xml และส่งผ่านไปยังเซิร์ฟเล็ต
เซิร์ฟเล็ตเรียกกลไกการแยกวิเคราะห์เพื่อสร้างเอาต์พุต html จากไฟล์ xml และสไตล์ชีต xsl แบบคงที่
(สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการประยุกต์ใช้ XSL โปรดดูที่ การใช้ XSL เป็นภาษาเทมเพลต)
ตัวอย่างการสร้าง XML โค้ดจริงสำหรับการสร้างสตริงเอกสาร XML ใน Java สามารถแบ่งออกเป็นหลายวิธีและคลาสต่างๆ
รหัสที่เริ่มกระบวนการสร้าง xml จะถูกวางไว้ในวิธี ejb อินสแตนซ์นี้จะสร้าง stringbuffer ทันทีเพื่อจัดเก็บสตริง xml ที่สร้างขึ้น
stringbuffer xml = stringbuffer ใหม่ ();
xml.append(xmlutils.begindocument("/browse_find/browse.xsl", "เรียกดู", คำขอ));
xml.ผนวก(product.toxml());
xml.append(xmlutils.enddocument("เรียกดู");
out.print(xml.tostring());
ตัวแปร xml.append() สามตัวต่อไปนี้เป็นการเรียกไปยังวิธีการอื่น
สร้างส่วนหัวของไฟล์ วิธีการเพิ่มเติมแรกเรียกคลาส xmlutils เพื่อสร้างส่วนหัวของไฟล์ xml รหัสในเซิร์ฟเล็ต Java ของเราเป็นดังนี้:
public static string beginningdocument(string stylesheet, string page)
-
stringbuffer xml = stringbuffer ใหม่ ();
xml.append("<?xml version="1.0"?>n")
.append("<?xml-stylesheet href="")
.append(สไตล์ชีต).ผนวก(""")
.append(" type ="text/xsl"?>n");
xml.append("<").append(page).append(">n");
กลับ xml.tostring();
}
รหัสนี้สร้างส่วนหัวของไฟล์ xml แท็ก <?xml> กำหนดไฟล์นี้เป็นไฟล์ xml ที่รองรับเวอร์ชัน 1.0 โค้ดบรรทัดที่สองชี้ไปยังตำแหน่งของสไตล์ชีตที่ถูกต้องเพื่อแสดงข้อมูล สิ่งสุดท้ายที่รวมไว้คือแท็กระดับรายการ (<browse> ในตัวอย่างนี้) ที่ส่วนท้ายของไฟล์ ต้องปิดเฉพาะแท็ก <browse> เท่านั้น
<?xml version="1.0"?> <?xml-stylesheet href="/browse_find/browse.xsl" type="text/xsl"?> <browse>
หลังจากกรอกข้อมูลผลิตภัณฑ์และกรอกส่วนหัวของไฟล์แล้ว ระบบจะ วิธีการควบคุมจะเรียกวัตถุ java เพื่อสร้าง xml ในตัวอย่างนี้ วัตถุผลิตภัณฑ์เรียกว่า ออบเจ็กต์ผลิตภัณฑ์ใช้สองวิธีในการสร้างการแสดง xml วิธีแรก toxml() สร้างโหนดผลิตภัณฑ์โดยสร้างแท็ก <product> และ </product> จากนั้นจะเรียก Internalxml() ซึ่งจัดเตรียมเนื้อหาที่จำเป็นสำหรับผลิตภัณฑ์ xml Internalxml() คือชุดของการเรียก stringbuffer.append() stringbuffer จะถูกแปลงเป็นสตริงและส่งคืนไปยังวิธีการควบคุมด้วย
toxml สตริงสาธารณะ ()
-
stringbuffer xml = new stringbuffer("<product>n");
xml.ผนวก(internalxml());
xml.append("</product>n");
กลับ xml.tostring();
}
สตริงสาธารณะ Internalxml()
-
stringbuffer xml = ใหม่
stringbuffer("t")
.append(ประเภทผลิตภัณฑ์).append("n");
xml.append("t").ผนวก(idvalue.trim())
.append("n");
xml.append("t").ผนวก(idname.trim())
.append("n");
xml.append("t").ผนวก(page.trim())
.append("n");
แป้ง?
xml.append("t").append(amount).append("n");
xml.append("t").append(vendor).append("n");
xml.ผนวก("tn");
xml.append("t").append(pubdesc).append("n");
xml.append("t").append(vendesc).append("n";
แป้ง?
กลับ xml.tostring();
-
ในที่สุด เมธอด xmlutils.enddocument() จะถูกเรียกหลังจากปิดไฟล์ การเรียกนี้จะปิดแท็ก xml (ในกรณีนี้) และสุดท้ายคือทำให้ไฟล์ xml ที่มีโครงสร้างสมบูรณ์ stringbuffer ทั้งหมดจากวิธีการควบคุมจะถูกแปลงเป็นสตริงและส่งคืนไปยังเซิร์ฟเล็ตที่จัดการคำขอ http ดั้งเดิม
3. ใช้ xsl เป็นภาษาเทมเพลต
ในการรับเอาต์พุต html เราจะรวมไฟล์ xml ที่สร้างขึ้นเข้ากับเทมเพลต xsl ที่ควบคุมวิธีการแสดงข้อมูล xml เทมเพลต xsl ของเราประกอบด้วยแท็ก xsl และ html ที่จัดระเบียบอย่างระมัดระวัง
เริ่มสร้างเทมเพลต จุดเริ่มต้นของเทมเพลต xsl ของเราคล้ายกับโค้ดด้านล่าง จำเป็นต้องมีโค้ดบรรทัดแรกและกำหนดไฟล์นี้เป็นสไตล์ชีต xsl แอ็ตทริบิวต์ xmlns:xsl= อ้างอิงถึงเนมสเปซ xml ที่ใช้โดยไฟล์นี้ และแอ็ตทริบิวต์ version= จะกำหนดหมายเลขเวอร์ชันของเนมสเปซ ในตอนท้ายของไฟล์เราจะปิดแท็ก
บรรทัดที่สองของโค้ดที่ขึ้นต้นด้วย <xsl:template> กำหนดโหมดของเทมเพลต xsl จำเป็นต้องมีแอ็ตทริบิวต์ match และที่นี่ชี้ไปที่แท็ก xml <basketpage> ในระบบของเรา แท็ก <basketpage> มีแท็ก <product> ซึ่งช่วยให้เทมเพลต xsl เข้าถึงข้อมูลผลิตภัณฑ์ที่ฝังอยู่ในแท็ก <product> เราต้องปิดแท็ก <xsl:template> ที่ท้ายไฟล์อีกครั้ง
ต่อไปเรามาดู html ที่มีการจัดระเบียบอย่างดีกัน เนื่องจากจะถูกประมวลผลโดยกลไกการแยกวิเคราะห์ XML จึงจะต้องเป็นไปตามกฎทั้งหมดของ XML ที่มีการจัดระเบียบอย่างดี โดยพื้นฐานแล้ว หมายความว่าแท็กเปิดทั้งหมดต้องมีแท็กปิดที่สอดคล้องกัน ตัวอย่างเช่น แท็ก <p> ที่ไม่ได้ปิดตามปกติจะต้องปิดด้วย </p>
<xsl:stylesheet xmlns:xsl=" http://www.w3.org/1999/xsl/transform "
รุ่น = "1.0">
<xsl:template match="ตะกร้าหน้า">
<html>
<หัว>
<title>ถุงช้อปปิ้ง / ปรับจำนวน</title>
</หัว>
<body bgcolor="#cccc99" bgproperties="fixed" link="#990000" vlink="#990000">
<br>
?br> </xsl:แม่แบบ>
</xsl:สไตล์ชีท>
ภายในเนื้อหาของเทมเพลต มีแท็ก xsl จำนวนมากที่ใช้เพื่อสร้างตรรกะสำหรับการนำเสนอข้อมูล มีคำอธิบายแท็กที่ใช้กันทั่วไปสองแท็กด้านล่าง
เลือก
แท็ก <xsl:choose> คล้ายกับจุดเริ่มต้นของโครงสร้าง if-then-else ในภาษาการเขียนโปรแกรมแบบดั้งเดิม ใน XSL แท็กเลือกจะระบุว่าในส่วนที่โค้ดเข้ามา การมอบหมายจะทริกเกอร์การดำเนินการ แท็ก <xsl:when> ที่มีแอตทริบิวต์ที่กำหนดจะตามหลังแท็กเลือก หากการกำหนดถูกต้อง เนื้อหาระหว่างแท็กเปิดและแท็กปิดของ <xsl:when> จะถูกนำมาใช้ หากการกำหนดไม่ถูกต้อง จะใช้เนื้อหาระหว่างแท็กเปิดและแท็กปิดของ <xsl:otherwise> ส่วนทั้งหมดลงท้ายด้วย </xsl:choose>
ในตัวอย่างนี้ เมื่อแท็กตรวจสอบ xml สำหรับแท็กปริมาณ หากแท็กปริมาณมีแอตทริบิวต์ข้อผิดพลาดที่มีค่าเป็นจริง แท็กปริมาณจะแสดงเซลล์ตารางตามรายการด้านล่าง หากค่าของแอตทริบิวต์ไม่เป็นความจริง xsl จะแสดงเนื้อหาระหว่างแท็กอย่างอื่น ในตัวอย่างด้านล่าง หากแอตทริบิวต์ข้อผิดพลาดไม่เป็นความจริง จะไม่มีอะไรแสดงขึ้นมา
<xsl:เลือก>
<xsl:when test="ปริมาณ[@error='true']">
<td bgcolor="#ffffff"><img height="1" width="1" src="