อ่าน 10 นาที
XSLT
XSLT ( Extensible Stylesheet Language Transformations ) เป็นภาษาที่ออกแบบมาเพื่อ แปลง เอกสาร XML เป็นเอกสาร XML อื่นๆ [ 1 ] หรือรูปแบบอื่นๆ เช่น HTML สำหรับ เว็บเพจ ข้อความ ธรรมดา...
XSLT
| XSLT | |
|---|---|
| กระบวนทัศน์ | การประกาศ |
| นักพัฒนา | สมาคมเว็บทั่วโลก (W3C) |
| ปรากฏครั้งแรก | 1998 |
| เวอร์ชันเสถียร | 3.0 / 8 มิถุนายน 2560 |
| นามสกุลไฟล์ | .xslt |
| เว็บไซต์ | www.w3.org/TR/xslt-30/ |
| การนำไปใช้งานหลักๆ | |
| libxslt , แซกซอน , ซาลาน | |
| ได้รับอิทธิพลจาก | |
| ดีเอสเอสแอล | |
| XSLT | |
|---|---|
| นามสกุลไฟล์ | .xslt |
| สื่อประเภทอินเทอร์เน็ต | แอปพลิเคชัน/xslt+xml |
| ตัวระบุประเภทมาตรฐาน (UTI) | org.w3.xsl |
XSLT ( Extensible Stylesheet Language Transformations ) เป็นภาษาที่ออกแบบมาเพื่อแปลง เอกสาร XMLเป็นเอกสาร XML อื่นๆ[ 1 ]หรือรูปแบบอื่นๆ เช่นHTMLสำหรับเว็บเพจข้อความธรรมดาหรือXSL Formatting Objectsรูปแบบเหล่านี้สามารถแปลงเป็นรูปแบบต่างๆ เช่นPDF , PostScriptและPNGได้ ในภายหลัง [ 2 ]การสนับสนุนการแปลง JSON และข้อความธรรมดาถูกเพิ่มเข้ามาในการอัปเดตครั้งต่อมาของข้อกำหนด XSLT 1.0
การใช้งาน XSLT 3.0 รองรับ Java, .NET, C/C++, Python, PHP และ NodeJS นอกจากนี้ยังสามารถโฮสต์ไลบรารี JavaScript XSLT 3.0 ภายในเว็บเบราว์เซอร์ได้อีกด้วย เว็บเบราว์เซอร์สมัยใหม่ยังรองรับ XSLT 1.0 ในตัวอีกด้วย[ 3 ] XSLT ล้าสมัยในเบราว์เซอร์แล้วเนื่องจากเทคโนโลยีที่ดีกว่า Google Chrome จะลบการใช้งาน XSLT ออกเพื่อให้เบราว์เซอร์มีความปลอดภัยมากขึ้น[ 4 ] [ 5 ]
การแปลงเอกสาร XSLT ระบุวิธีการแปลงเอกสาร XML เป็นเอกสารใหม่ (โดยปกติจะเป็น XML แต่รูปแบบอื่น ๆ เช่น ข้อความธรรมดาก็รองรับเช่นกัน) [ 6 ]โดยทั่วไป เอกสารอินพุตจะเป็นไฟล์ XML แต่สามารถใช้สิ่งใดก็ตามที่โปรเซสเซอร์สามารถสร้างXQuery และ XPath Data Modelได้ เช่น ตาราง ฐานข้อมูลเชิงสัมพันธ์หรือระบบสารสนเทศทางภูมิศาสตร์[ 1 ]
แม้ว่า XSLT จะได้รับการออกแบบมาให้เป็นภาษาเฉพาะทางสำหรับการแปลง XML แต่ภาษานี้ก็เป็นภาษาที่สมบูรณ์แบบตามทฤษฎี Turingทำให้สามารถคำนวณได้ตามอำเภอใจ[ 7 ]
ประวัติศาสตร์
XSLT ได้รับอิทธิพลจากภาษาเชิงฟังก์ชัน [ 8 ]และจากภาษาการจับคู่รูปแบบตามข้อความ เช่นSNOBOLและAWKบรรพบุรุษโดยตรงที่สุดคือDSSSLซึ่งทำหน้าที่ให้กับSGML เหมือนกับที่ XSLT ทำ หน้าที่ให้กับ XML [ 9 ]
- XSLT 1.0: XSLT เป็นส่วนหนึ่งของความพยายามในการพัฒนาภาษาสไตล์ชีตที่ขยายได้ (XSL) ของWorld Wide Web Consortium (W3C) ในปี 1998–1999 ซึ่งเป็นโครงการที่สร้าง XSL-FOและXPathขึ้นมาด้วย สมาชิกบางคนของคณะกรรมการมาตรฐานที่พัฒนา XSLT รวมถึงJames Clarkบรรณาธิการ เคยทำงานเกี่ยวกับ DSSSL มาก่อน XSLT 1.0 ได้รับการเผยแพร่เป็นข้อแนะนำของ W3Cในเดือนพฤศจิกายน 1999 [ 10 ]แม้จะมีอายุมากแล้ว แต่ XSLT 1.0 [ 11 ]ก็ยังคงถูกใช้งานอย่างแพร่หลาย (ณ ปี 2018) เนื่องจากเวอร์ชันที่ใหม่กว่าไม่ได้รับการสนับสนุนโดยตรงในเว็บเบราว์เซอร์หรือสำหรับสภาพแวดล้อมเช่นLAMP
- XSLT 2.0: หลังจากความพยายามที่ไม่ประสบความสำเร็จในการสร้างเวอร์ชัน 1.1 ในปี 2544 [ 12 ]กลุ่มทำงาน XSL ได้ร่วมมือกับ กลุ่มทำงาน XQueryเพื่อสร้างXPath 2.0 [ 13 ] ด้วยแบบจำลองข้อมูลและระบบประเภทที่สมบูรณ์ยิ่งขึ้นโดย อิงจากXML Schema XSLT 2.0 [ 14 ]ได้รับการพัฒนาภายใต้การดูแลของบรรณาธิการMichael Kayซึ่งได้รับการรับรองในเดือนมกราคม 2550 [ 15 ] นวัตกรรมที่สำคัญที่สุดใน XSLT 2.0 ได้แก่:
- การจัดการสตริงโดยใช้regular expression
- ฟังก์ชันและตัวดำเนินการสำหรับจัดการวันที่ เวลา และระยะเวลา
- เอกสารเอาต์พุตหลายรายการ
- การจัดกลุ่ม (การสร้างโครงสร้างแบบลำดับชั้นจากลำดับข้อมูลป้อนเข้าแบบแบนราบ)
- ระบบการพิมพ์ที่สมบูรณ์ยิ่งขึ้นและการตรวจสอบการพิมพ์ที่แข็งแกร่งกว่าเดิม
- XSLT 3.0: กลายเป็นข้อแนะนำของ W3C เมื่อวันที่ 8 มิถุนายน 2017 คุณสมบัติใหม่หลักๆ ได้แก่: [ 16 ]
- การแปลงแบบสตรีมมิ่ง : ในเวอร์ชันก่อนหน้า เอกสารอินพุตทั้งหมดจะต้องถูกอ่านเข้าไปในหน่วยความจำก่อนจึงจะสามารถประมวลผลได้[ 17 ]และไม่สามารถเขียนเอาต์พุตได้จนกว่าการประมวลผลจะเสร็จสิ้น XSLT 3.0 อนุญาตให้สตรีม XMLซึ่งมีประโยชน์สำหรับการประมวลผลเอกสารที่มีขนาดใหญ่เกินกว่าจะพอดีกับหน่วยความจำ หรือเมื่อมีการเชื่อมโยงการแปลงในXML Pipelines
- แพ็กเกจต่างๆ เพื่อปรับปรุงความยืดหยุ่นในการใช้งานของไฟล์สไตล์ชีตขนาดใหญ่
- ปรับปรุงการจัดการข้อผิดพลาดแบบไดนามิก เช่น ข้อผิดพลาดที่เกิดจากคำสั่ง xsl:try
- รองรับแผนที่และอาร์เรย์ ทำให้ XSLT สามารถจัดการได้ทั้ง JSON และ XML
- ขณะนี้ฟังก์ชันสามารถเป็นอาร์กิวเมนต์ของฟังก์ชันอื่น (ฟังก์ชันลำดับสูงกว่า) ได้แล้ว
แบบจำลองการออกแบบและการประมวลผล

ตัวประมวลผล XSLT รับเอกสารต้นฉบับ XML หนึ่งฉบับขึ้นไป พร้อมด้วยสไตล์ชีต XSLT หนึ่งฉบับขึ้นไป และประมวลผลเพื่อสร้างเอกสารเอาต์พุตหนึ่งฉบับขึ้นไป[ 18 ] [ 19 ]ในทางตรงกันข้ามกับภาษาการเขียนโปรแกรมเชิงคำสั่งที่ ใช้กันอย่างแพร่หลาย เช่น C XSLT เป็น ภาษา เชิงประกาศ[ 20 ]รูปแบบการประมวลผลพื้นฐานคือการจับคู่รูปแบบ[ 21 ]แทนที่จะแสดงรายการลำดับการกระทำเชิงคำสั่งที่จะดำเนินการในสภาพแวดล้อมที่มีสถานะ กฎเทมเพลตจะกำหนดเพียงวิธีการจัดการโหนดที่ตรงกับรูปแบบคล้าย XPath เฉพาะ หากตัวประมวลผลพบเจอ และเนื้อหาของเทมเพลตประกอบด้วยนิพจน์เชิงฟังก์ชัน ที่แสดงรูปแบบที่ประเมินแล้วโดยตรง: ต้นไม้ผลลัพธ์ ซึ่งเป็นพื้นฐานของเอาต์พุตของตัวประมวลผล
โดยทั่วไปแล้ว ตัวประมวลผลจะทำงานดังนี้ ขั้นแรก สมมติว่าได้อ่านและเตรียมสไตล์ชีตไว้แล้ว ตัวประมวลผลจะสร้างโครงสร้างต้นไม้ ต้นทาง จากเอกสาร XML ที่ป้อนเข้ามา จากนั้นจะประมวลผลโหนดรากของโครงสร้างต้นไม้ต้นทาง ค้นหาเทมเพลตที่ตรงกันที่สุดสำหรับโหนดนั้นในสไตล์ชีต และประเมินเนื้อหาของเทมเพลต คำสั่งในแต่ละเทมเพลตโดยทั่วไปจะสั่งให้ตัวประมวลผลสร้างโหนดในโครงสร้างต้นไม้ผลลัพธ์ หรือประมวลผลโหนดเพิ่มเติมในโครงสร้างต้นไม้ต้นทางในลักษณะเดียวกับโหนดราก สุดท้าย โครงสร้างต้นไม้ผลลัพธ์จะถูกแปลงเป็นข้อความ XML หรือ HTML
XPath
XSLT ใช้XPath เพื่อระบุส่วนย่อยของโครงสร้างเอกสารต้นฉบับและทำการคำนวณ XPath ยังมี ฟังก์ชันต่างๆ มากมายซึ่ง XSLT เองก็เสริมฟังก์ชันเหล่านั้นให้ดียิ่งขึ้นไปอีก
XSLT 1.0 ใช้ XPath 1.0 ในขณะที่ XSLT 2.0 ใช้ XPath 2.0 ส่วน XSLT 3.0 จะทำงานได้ทั้งกับ XPath 3.0 และ 3.1 สำหรับเวอร์ชัน 1.0 และ 2.0 นั้น ข้อกำหนดของ XSLT และ XPath ถูกเผยแพร่ในวันเดียวกัน แต่สำหรับเวอร์ชัน 3.0 นั้น ไม่ได้ตรงกันอีกต่อไป XPath 3.0 กลายเป็นข้อแนะนำในเดือนเมษายน 2014 ตามด้วย XPath 3.1 ในเดือนกุมภาพันธ์ 2017 และ XSLT 3.0 ในเดือนมิถุนายน 2017
XQuery เปรียบเทียบ
ฟังก์ชันการทำงานของ XSLT นั้นทับซ้อนกับฟังก์ชันการทำงานของXQueryซึ่งเดิมทีถูกคิดค้นขึ้นมาในฐานะภาษาสำหรับการสืบค้นข้อมูลในชุดเอกสาร XML ขนาดใหญ่
มาตรฐาน XSLT 2.0 และ XQuery 1.0 ได้รับการพัฒนาโดยกลุ่มทำงานที่แยกจากกันภายในW3Cโดยทำงานร่วมกันเพื่อให้มั่นใจได้ว่ามีแนวทางที่สอดคล้องกันในส่วนที่เหมาะสม ทั้งสองมาตรฐานใช้โมเดลข้อมูล ระบบประเภท และไลบรารีฟังก์ชันเดียวกัน และทั้งสองมาตรฐานยังรวมถึงXPath 2.0 เป็นภาษาย่อยด้วย
อย่างไรก็ตาม ภาษาทั้งสองมีรากฐานมาจากประเพณีที่แตกต่างกันและตอบสนองความต้องการของชุมชนที่แตกต่างกัน XSLT ถูกคิดค้นขึ้นมาในฐานะภาษาสำหรับจัดรูปแบบเอกสาร โดยมีเป้าหมายหลักคือการแสดงผล XML ให้ผู้อ่านเห็นบนหน้าจอ บนเว็บ (ในฐานะภาษาสำหรับแม่แบบเว็บ ) หรือบนกระดาษ ในขณะที่ XQuery ถูกคิดค้นขึ้นมาในฐานะภาษาสำหรับการสืบค้นฐานข้อมูลตามแบบฉบับของ SQL
เนื่องจากภาษาทั้งสองมีต้นกำเนิดมาจากชุมชนที่แตกต่างกัน XSLT จึงมีประสิทธิภาพมากกว่าในการจัดการเอกสารบรรยายที่มีโครงสร้างที่ยืดหยุ่นกว่า ในขณะที่ XQuery มีประสิทธิภาพมากกว่าในการจัดการข้อมูล เช่น เมื่อทำการเชื่อมต่อเชิงสัมพันธ์[ 22 ]
ประเภทสื่อ
องค์ประกอบ นี้<output>สามารถรับแอตทริบิวต์เพิ่มเติมได้media-typeซึ่งช่วยให้สามารถกำหนดประเภทสื่อ (หรือประเภท MIME) สำหรับเอาต์พุตที่ได้ ตัวอย่างเช่น: <xsl:output output="xml" media-type="application/xml"/>คำแนะนำของ XSLT 1.0 แนะนำให้ใช้ประเภทแอตทริบิวต์ทั่วไปมากกว่าtext/xmlและapplication/xmlเนื่องจากเป็นเวลานานที่ไม่มีการลงทะเบียนประเภทสื่อสำหรับ XSLT ในช่วงเวลานั้นtext/xslจึงกลายเป็นมาตรฐานโดยพฤตินัย ใน XSLT 1.0 ไม่ได้ระบุวิธีmedia-typeการใช้งานค่าเหล่านั้น
เมื่อมีการเปิดตัว XSLT 2.0 W3C ได้แนะนำในปี 2550 ให้ลงทะเบียนประเภทสื่อ MIME application/xslt+xml[ 23 ]และต่อมาได้ลงทะเบียนกับหน่วยงานกำหนดหมายเลขอินเทอร์เน็ต[ 24 ]
ร่างงานก่อนเวอร์ชัน 1.0 ของ XSLT ที่ใช้text/xslในตัวอย่างการฝัง และประเภทนี้ได้รับการนำไปใช้และส่งเสริมอย่างต่อเนื่องโดย Microsoft ใน Internet Explorer [ 25 ]และ MSXML ประมาณปี 2012 นอกจากนี้ยังได้รับการยอมรับอย่างกว้างขวางในxml-stylesheetคำสั่งประมวลผลโดยเบราว์เซอร์อื่นๆ ในทางปฏิบัติ ดังนั้น ผู้ใช้ที่ต้องการควบคุมการแปลงในเบราว์เซอร์โดยใช้คำสั่งประมวลผลนี้จึงจำเป็นต้องใช้ประเภทสื่อที่ไม่ได้ลงทะเบียนนี้[ 26 ]
ตัวอย่าง
ตัวอย่างเหล่านี้ใช้เอกสาร XML ขาเข้าดังต่อไปนี้:
<?xml version="1.0" ?> <persons> <person username= "JS1" > <name> John </name> <family-name> Smith </family-name> </person> <person username= "MI1" > <name> Morka </name> <family-name> Ismincius </family-name> </person> </persons>ตัวอย่างที่ 1 (การแปลง XML เป็น XML)
สไตล์ชีต XSLT นี้มีเทมเพลตสำหรับแปลงเอกสาร XML:
<?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet xmlns:xsl= "http://www.w3.org/1999/XSL/Transform" version= "1.0" > <xsl:output method= "xml" indent= "yes" /><xsl:template match= "/persons" > <root> <xsl:apply-templates select= "person" /> </root> </xsl:template><xsl:template match= "person" > <name username= "{@username}" > <xsl:value-of select= "name" /> </name> </xsl:template></xsl:stylesheet>ผลการประเมินจะส่งผลให้เกิดเอกสาร XML ใหม่ ซึ่งมีโครงสร้างที่แตกต่างออกไป:
<?xml version="1.0" encoding="UTF-8"?> <root> <name username= "JS1" > John </name> <name username= "MI1" > Morka </name> </root>ตัวอย่างที่ 2 (การแปลง XML เป็น XHTML)
ประมวลผลไฟล์ XSLT ตัวอย่างต่อไปนี้
<?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version= "1.0" xmlns:xsl= "http://www.w3.org/1999/XSL/Transform" xmlns= "http://www.w3.org/1999/xhtml" ><xsl:output method= "xml" indent= "yes" encoding= "UTF-8" /><xsl:template match= "/persons" > <html> <head> <title>ตัวอย่างการทดสอบXML </title> </head> <body> <h1>บุคคล</h1> <ul> <xsl:apply-templates select= "person" > <xsl:sort select= "family-name" /> </xsl:apply-templates> </ul> </body> </html> </xsl:template><xsl:template match= "person" > <li> <xsl:value-of select= "family-name" /><xsl:text> , </xsl:text><xsl:value-of select= "name" /> </li> </xsl:template></xsl:stylesheet>เมื่อใช้ไฟล์ XML ที่แสดงด้านบน จะได้ผลลัพธ์เป็นXHTML ดังต่อไปนี้ ( มีการปรับ ช่องว่าง เพื่อให้เข้าใจง่ายขึ้น):
<?xml version="1.0" encoding="UTF-8"?> <html xmlns= "http://www.w3.org/1999/xhtml" > <head> <title>ตัวอย่างการทดสอบXML </title> </head> <body> <h1>บุคคล</h1> <ul> <li> Ismincius, Morka </li> <li> Smith, John </li> </ul> </body> </html>โค้ด XHTML นี้จะสร้างผลลัพธ์ดังที่แสดงด้านล่างเมื่อแสดงผลในเว็บเบราว์เซอร์

เพื่อให้เว็บเบราว์เซอร์สามารถใช้การแปลง XSL กับเอกสาร XML ที่แสดงได้ จะต้องแทรกคำสั่งประมวลผลสไตล์ชีต XML ลงใน XML ตัวอย่างเช่น หากสไตล์ชีตในตัวอย่างที่ 2 ข้างต้นมีให้ใช้งานในชื่อ "example2.xsl" คำสั่งต่อไปนี้สามารถเพิ่มลงใน XML ขาเข้าเดิมได้: [ 27 ]
<?xml-stylesheet href="example2.xsl" type="text/xsl" ?>ในตัวอย่างนี้text/xslถือว่าไม่ถูกต้องตามข้อกำหนดของ W3C [ 27 ] (ซึ่งระบุว่าประเภทควรเป็นapplication/xslt+xml) แต่เป็นประเภทสื่อเดียวที่ได้รับการสนับสนุนอย่างกว้างขวางในเบราว์เซอร์ต่างๆ ตั้งแต่ปี 2009 และสถานการณ์ยังคงไม่เปลี่ยนแปลงในปี 2021
การใช้งานโปรเซสเซอร์
- RaptorXML จากAltovaเป็นตัวประมวลผล XSLT 3.0 ที่มีให้ใช้งานในชุดเครื่องมือพัฒนา XMLSpy และในรูปแบบเซิร์ฟเวอร์แบบสแตนด์อโลน ซึ่งสามารถเรียกใช้งานได้ผ่านทางอินเทอร์เฟซ REST
- IBMนำเสนอการประมวลผล XSLT ที่ฝังอยู่ในอุปกรณ์ฮาร์ดแวร์เฉพาะทางภายใต้แบรนด์Datapower
- libxsltเป็นไลบรารีฟรี ที่เผยแพร่ภายใต้ใบอนุญาต MITซึ่งสามารถนำไปใช้ซ้ำในแอปพลิเคชันเชิงพาณิชย์ได้ โดยอิงจากlibxmlและเขียนด้วยภาษา Cเพื่อความเร็วและความคล่องตัว รองรับส่วนขยาย XSLT 1.0 และ EXSLT [ 28 ]
- สามารถใช้งานได้ที่บรรทัดคำสั่งผ่าน xsltproc [ 29 ]ซึ่งรวมอยู่ในmacOS [ 30 ]และระบบปฏิบัติการ Linux หลายตัว และสามารถใช้งานได้บน Windowsผ่านCygwin [ 31 ]
- เอ็นจิ้นการจัดวาง WebKitและBlink ซึ่งใช้ใน เว็บเบราว์เซอร์ SafariและChromeตามลำดับ ใช้ไลบรารี libxslt เพื่อทำการแปลง XSL [ 32 ]
- มีการเชื่อมต่อสำหรับPython [ 33 ] Perl [ 34 ] Ruby [ 35 ] PHP [ 36 ] Common Lisp [ 37 ] Tcl [ 38 ] และ C ++ [ 39 ]
- Microsoftมีโปรเซสเซอร์ XSLT สองตัว (ทั้งสองตัวเป็น XSLT 1.0 เท่านั้น) โปรเซสเซอร์รุ่นก่อนหน้าMSXMLมีอินเทอร์เฟซ COM; ตั้งแต่ MSXML 4.0 เป็นต้นไป ยังมียูทิลิตี้บรรทัดคำสั่งอีกด้วย
msxsl.exe[ 40 ] รันไทม์ .NET มีโปรเซสเซอร์ XSLT ในตัวแยกต่างหากในSystem.Xml.Xslไลบรารี - Saxonเป็นตัวประมวลผล XSLT 3.0 และ XQuery 3.1 ที่มี เวอร์ชัน โอเพนซอร์สและกรรมสิทธิ์สำหรับการทำงานแบบสแตนด์อะโลนและสำหรับJava , JavaScriptและ .NET ผลิตภัณฑ์แยกต่างหาก Saxon-JS [ 41 ]นำเสนอการประมวลผล XSLT 3.0 บนNode.jsและในเบราว์เซอร์
- xjsltเป็น คอมไพเลอร์ XSLT 2.0 แบบโอเพนซอร์สสำหรับJavaScriptที่รองรับทั้งNode.jsและเว็บเบราว์เซอร์
- Xalanเป็นโปรเซสเซอร์ XSLT 1.0 แบบโอเพนซอร์สจากApache Software Foundationซึ่งใช้งานได้กับ Java และ C++ เวอร์ชันหนึ่งของโปรเซสเซอร์ Xalan ถูกรวมไว้เป็นโปรเซสเซอร์ XSLT เริ่มต้นในชุดการแจกจ่าย Java มาตรฐานจาก Oracle
- เว็บเบราว์เซอร์: Safari, Chrome (กำลังดำเนินการลบ), Firefox, Opera และ Internet Explorer ทั้งหมดรองรับ XSLT 1.0 (เท่านั้น) [ 42 ]
ผลงาน
โปรเซสเซอร์ XSLT รุ่นแรกส่วนใหญ่เป็นตัวแปลภาษา เมื่อไม่นานมานี้ การสร้างโค้ดเป็นที่นิยมมากขึ้น โดยใช้ภาษาตัวกลางแบบพกพา (เช่นJava bytecodeหรือ .NET Common Intermediate Language ) เป็นเป้าหมาย อย่างไรก็ตาม แม้แต่ผลิตภัณฑ์แบบแปลภาษาก็มักจะมีขั้นตอนการวิเคราะห์และการดำเนินการแยกกัน ทำให้สามารถสร้างโครงสร้างนิพจน์ที่เหมาะสมที่สุดในหน่วยความจำและนำกลับมาใช้ใหม่เพื่อทำการแปลงหลายครั้ง ซึ่งให้ประโยชน์ด้านประสิทธิภาพอย่างมากในแอปพลิเคชันการเผยแพร่ออนไลน์ ซึ่งการแปลงแบบเดียวกันจะถูกนำไปใช้หลายครั้งต่อวินาทีกับเอกสารต้นฉบับที่แตกต่างกัน[ 43 ]การแยกส่วนนี้สะท้อนให้เห็นในการออกแบบ API การประมวลผล XSLT (เช่นJAXP )
ตัวประมวลผล XSLT ในยุคแรกๆ มีการเพิ่มประสิทธิภาพน้อยมาก เอกสารสไตล์ชีตจะถูกอ่านเข้าไปในDocument Object Modelsและตัวประมวลผลจะดำเนินการกับเอกสารเหล่านั้นโดยตรง เอ็นจิ้น XPathก็ไม่ได้ถูกเพิ่มประสิทธิภาพเช่นกัน อย่างไรก็ตาม ตัวประมวลผล XSLT ใช้เทคนิคการเพิ่มประสิทธิภาพที่พบในภาษาการเขียนโปรแกรมเชิงฟังก์ชันและภาษาการสืบค้นฐานข้อมูลมากขึ้นเรื่อยๆ เช่น การเขียนใหม่ของโครงสร้างต้นไม้ของนิพจน์แบบคงที่ (เช่น เพื่อย้ายการคำนวณออกจากลูป) และการประเมินแบบไปป์ไลน์แบบขี้เกียจเพื่อลดการใช้หน่วยความจำของผลลัพธ์ระดับกลาง (และอนุญาตให้ "ออกก่อนกำหนด" เมื่อตัวประมวลผลสามารถประเมินนิพจน์ได้ เช่น โดยfollowing-sibling::*[1]ไม่ต้องประเมินนิพจน์ย่อยทั้งหมด) ตัวประมวลผลจำนวนมากยังใช้การแสดงแบบต้นไม้ที่มีประสิทธิภาพมากกว่า (ทั้งในด้านพื้นที่และเวลา) [ 44 ]การใช้งาน DOM ทั่วไป
ในเดือนมิถุนายน พ.ศ. 2557 Debbie Lockett และMichael Kayได้แนะนำเฟรมเวิร์กการวัดประสิทธิภาพแบบโอเพนซอร์สสำหรับโปรเซสเซอร์ XSLT ที่เรียกว่า XT-Speedo [ 45 ]
ดูเพิ่มเติม
- องค์ประกอบ XSLT – รายชื่อโครงสร้าง XSLT ที่ใช้กันทั่วไปบางส่วน
- การจัดกลุ่มภาษาถิ่นมุนเชียน – ความแตกต่างทางภาษาถิ่นระหว่าง XSLT1 และ XSLT2+
- ภาษาสไตล์ชีตที่ขยายได้ (Extensible Stylesheet Language - XSLT) – กลุ่มภาษาที่ XSLT เป็นหนึ่งในสมาชิก
- เปรียบเทียบ XQuery และ XSLT
- XSL formatting objectsหรือXSL-FO – ภาษาที่ใช้ XML สำหรับเอกสาร ซึ่งโดยปกติจะสร้างขึ้นโดยการแปลงเอกสารต้นฉบับด้วย XSLT ประกอบด้วยอ็อบเจ็กต์ที่ใช้ในการสร้างเอาต์พุตที่จัดรูปแบบแล้ว
- การแปลงข้อมูลเอกลักษณ์ – จุดเริ่มต้นสำหรับชุดตัวกรองที่เพิ่มหรือลบองค์ประกอบข้อมูลออกจากโครงสร้าง XML ในขั้นตอนการแปลงข้อมูล
- Apache Cocoon – เฟรมเวิร์กที่ใช้ ภาษา Javaสำหรับประมวลผลข้อมูลด้วย XSLT และตัวแปลงข้อมูลอื่นๆ
อ่านเพิ่มเติม
- XSLTโดย Doug Tidwell จัดพิมพ์โดย O'Reilly ( ISBN) 0-596-00053-7)
- หนังสือ XSLT Cookbookโดย Sal Mangano จัดพิมพ์โดย O'Reilly ( ISBN) 0-596-00974-7)
- คู่มืออ้างอิงสำหรับโปรแกรมเมอร์ XSLT 2.0โดยMichael Kay ( ISBN) 0-764-56909-0)
- คู่มืออ้างอิงสำหรับโปรแกรมเมอร์ XSLT 2.0 และ XPath 2.0โดย Michael Kay ( ISBN) 978-0-470-19274-0)
- การพัฒนาเว็บด้วย XSLT 2.0โดย Dmitry Kirsanov ( ISBN) 0-13-140635-3)
- XSL Companion ฉบับที่ 2โดย Neil Bradley จัดพิมพ์โดย Addison-Wesley ( ISBN) 0-201-77083-0)
- XSLT และ XPath บนขอบ (ฉบับไม่จำกัดจำนวน)โดยJeni Tennisonจัดพิมพ์โดย Hungry Minds Inc, สหรัฐอเมริกา ( ISBN) 0-7645-4776-3)
- XSLT & XPath, A Guide to XML Transformationsโดย John Robert Gardner และ Zarella Rendon จัดพิมพ์โดย Prentice-Hall ( ISBN) 0-13-040446-2)
- XSL-FOโดย Dave Pawson จัดพิมพ์โดย O'Reilly ( ISBN) 978-0-596-00355-5)
ลิงก์ภายนอก
- เอกสารประกอบ
- XSLT 1.0 ข้อแนะนำของ W3C
- XSLT 2.0 ข้อแนะนำของ W3C
- XSLT 3.0 ข้อแนะนำของ W3C
- "XSLT: Extensible Stylesheet Language Transformations" . MDN . สืบค้นเมื่อ2025-02-09 .
- เอกสารอ้างอิง XSLT (MSDN)
- องค์ประกอบ XSLT (Saxon)
- บทนำและข้อมูลอ้างอิงเกี่ยวกับ XSLT
- ไลบรารีโค้ด XSLT
- EXSLTเป็นโครงการริเริ่มของชุมชนในวงกว้างเพื่อมอบส่วนขยายเพิ่มเติมให้กับ XSLT
- FXSLเป็นไลบรารีที่รองรับฟังก์ชันลำดับสูงใน XSLT โดย FXSL เขียนขึ้นด้วย XSLT เอง
- ไลบรารีมาตรฐาน XSLT (xsltsl) มอบชุดเทมเพลต XSLT สำหรับฟังก์ชันที่ใช้กันทั่วไปให้กับนักพัฒนา XSLT เทมเพลตเหล่านี้ถูกเขียนขึ้นด้วย XSLT ล้วนๆ โดยไม่ใช้ส่วนขยายใดๆ xsltsl เป็นโครงการบน SourceForge
- Kernow คือ GUI สำหรับ Saxon ที่มีอินเทอร์เฟซแบบชี้และคลิกเพื่อเรียกใช้การแปลงข้อมูล
- xslt.js – ไลบรารี JavaScript สำหรับแปลง XML ด้วย XSLT ในเบราว์เซอร์
สรุปเนื้อหา
ข้อมูลสำคัญจากบทความ
ข้อมูลสำคัญเกี่ยวกับ XSLT
XSLT ( Extensible Stylesheet Language Transformations ) เป็นภาษาที่ออกแบบมาเพื่อ แปลง เอกสาร XML เป็นเอกสาร XML อื่นๆ [ 1 ] หรือรูปแบบอื่นๆ เช่น HTML สำหรับ เว็บเพจ ข้อความ ธรรมดา...
ประวัติศาสตร์
XSLT ได้รับอิทธิพลจาก ภาษาเชิงฟังก์ชัน [ 8 ] และจากภาษาการจับคู่รูปแบบตามข้อความ เช่น SNOBOL และ AWK บรรพบุรุษโดยตรงที่สุดคือ DSSSL ซึ่งทำหน้าที่ให้กับ SGML เหมือนกับที่ XSLT ทำ หน้าที่ ให้กับ XML [ 9 ]
แบบจำลองการออกแบบและการประมวลผล
ตัวประมวลผล XSLT รับเอกสารต้นฉบับ XML หนึ่งฉบับขึ้นไป พร้อมด้วยสไตล์ชีต XSLT หนึ่งฉบับขึ้นไป และประมวลผลเพื่อสร้างเอกสารเอาต์พุตหนึ่งฉบับขึ้นไป [ 18 ] [ 19 ] ในทางตรงกันข้ามกับภาษา การเขียนโปรแกรมเชิงคำสั่งที่ ใช้กันอย่างแพร่หลาย เช่น C XSLT เป็น ภาษา เชิง...
XPath
XSLT ใช้ XPath เพื่อระบุส่วนย่อยของโครงสร้างเอกสารต้นฉบับและทำการคำนวณ XPath ยังมี ฟังก์ชัน ต่างๆ มากมายซึ่ง XSLT เองก็เสริมฟังก์ชันเหล่านั้นให้ดียิ่งขึ้นไปอีก