ไฟล์ XSL-FO คืออะไร??
XSL-FO (XSL Formatting Objects) เป็นภาษาสไตล์ชีตที่มีประสิทธิภาพสำหรับการจัดรูปแบบเอกสาร XML ความหมายของรูปแบบกระดาษและการพิมพ์ที่มีขอบเขตจะแสดงโดย XSL-FO เมื่อขนาดได้รับการแก้ไข ตรงกันข้ามกับ HTML ซึ่งแสดงถึงความหมายของรูปแบบที่ไม่มีขอบเขตของหน้าต่างเบราว์เซอร์ที่มีขนาดตัวแปร เอกสาร XML ที่จัดรูปแบบโดย XSL-FO ส่วนใหญ่จะใช้ในการสร้างไฟล์ PDF XSL (Extensible Stylesheet Language) เป็นชุดของเทคโนโลยี W3C ที่มีคุณลักษณะครบถ้วน มีจุดประสงค์เพื่อการออกแบบสำหรับการจัดรูปแบบและการแลกเปลี่ยนเอกสาร XML และส่วน XSL-FO ของภาษานี้ XSLT และ XPath เป็นส่วนอื่นๆ ของ XSL
มีการเสนอว่าควรแปลงเอกสาร XML เป็น XSL-FO ก่อน PDF เป็นตัวอย่างของเกณฑ์นี้ ใน PDF ผลลัพธ์จะแสดงโดยใช้ XSLT ก่อน จากนั้นจึงจัดรูปแบบ XSL-FO ในรูปแบบนี้ เอกสาร XML สามารถจัดรูปแบบแบบสุ่มได้ แม้ว่า XSL-FO จะใช้ประโยชน์จากการใช้คุณสมบัติ Cascading Style Sheet (CSS) และขยายคุณสมบัติเหล่านั้นเมื่อจำเป็นสำหรับรูปแบบจริง แต่ก็มีการจัดเตรียมเทมเพลตเพจที่เรียกว่าเพจมาสเตอร์ในคำศัพท์เฉพาะของ XSL-FO XSL-FO ยังมีการจัดรูปแบบสำหรับเอกสารที่ค่อนข้างซับซ้อนและรองรับการสร้างดัชนี
ประวัติและแนวคิดพื้นฐาน
ในเดือนมกราคม 2555 ร่างการทำงานของ XSL-FO ได้รับการอัปเดตครั้งล่าสุด และในเดือนพฤศจิกายน 2556 คณะทำงานได้ถูกปิด สไตล์ชีต XSL ระบุการนำเสนอคลาสของเอกสาร XML โดยอธิบายว่าอินสแตนซ์ของคลาสถูกแปลงเป็นเอกสาร XML ที่ใช้คำศัพท์ในการจัดรูปแบบอย่างไร XSL-FO เป็นภาษานำเสนอแบบผสมผสานและไม่มีมาร์กอัปความหมายที่ใช้ใน HTML ยิ่งไปกว่านั้น ภาษานี้เก็บข้อมูลทั้งหมดของเอกสารไว้ภายในตัวมันเอง ตรงกันข้ามกับ CSS ซึ่งจะเปลี่ยนแปลงการตั้งค่าเริ่มต้นของเอกสาร HTML หรือ XML ภายนอก
เกณฑ์ทั่วไปของการใช้ XSL-FO คือให้ผู้ใช้เขียนเอกสารด้วยภาษา XML แทนที่จะเขียนด้วยภาษา FO หลังจากนั้น การแปลง XSLT จะเกิดขึ้น การแปลง XSLT นี้รับผิดชอบการแปลง XML เป็น XSL-FO ทันทีที่เอกสาร XSL-FO ถูกสร้างขึ้น เอกสารนั้นจะถูกส่งต่อไปยังแอปพลิเคชันที่เรียกว่าตัวประมวลผล FO โปรเซสเซอร์ FO มีหน้าที่รับผิดชอบในการแปลงเอกสารนี้เป็นเอกสารที่อ่านได้และพิมพ์ได้ ไฟล์ PDF หรือ PS คือตัวอย่างเอาต์พุตทั่วไปของ XSL-FO แต่ไม่ได้หมายความว่าตัวประมวลผล FO สามารถสร้างรูปแบบทั้งสองประเภทนี้เป็นเอาต์พุตเท่านั้น โปรเซสเซอร์ FO บางตัวสามารถส่งออกเป็นไฟล์ RTF หรือแม้แต่หน้าต่างสามารถปรากฏใน GUI ของผู้ใช้ หน้าต่างนี้จะแสดงลำดับของหน้าและเนื้อหา
เอกสาร XSL-FO แตกต่างจาก PDF หรือ PS ในแง่ที่ว่าท้ายที่สุดแล้ว เอกสารนี้ไม่ได้กำหนดเค้าโครงข้อความในหน้าต่างๆ บางที มันจัดรูปแบบหน้าและกำหนดตำแหน่งที่จะแสดงเนื้อหา ยิ่งกว่านั้น ตัวประมวลผล FO จะจัดระเบียบข้อความภายในขอบเขตที่ระบุโดยเอกสาร FO ข้อกำหนดนี้อนุญาตให้ตัวประมวลผล FO ที่แตกต่างกันทำงานตามเพจที่สร้างผลลัพธ์ ตัวอย่างของลักษณะการทำงานดังกล่าวคือการใส่ยัติภังค์ ตัวประมวลผล FO บางตัวสามารถใส่ยัติภังค์คำเพื่อประหยัดพื้นที่เมื่อขึ้นบรรทัดใหม่ ในขณะที่ตัวประมวลผลบางตัวไม่เลือกตัวเลือกนี้ ขึ้นอยู่กับโปรเซสเซอร์ที่จะเลือกอัลกอริทึมยัติภังค์ที่แตกต่างกันซึ่งตรงกับความต้องการของพวกเขา อัลกอริทึมการใส่ยัติภังค์เหล่านี้อาจเรียบง่ายหรือซับซ้อนกว่านั้น ในบางสถานการณ์ ข้อกำหนดเฉพาะของ XSL-FO จะลงโทษโปรเซสเซอร์ FO อย่างชัดเจน ซึ่งเป็นทางเลือกในระดับหนึ่งในบริบทของเลย์เอาต์
ความแตกต่างระหว่างโปรเซสเซอร์ FO นี้สร้างผลลัพธ์ที่แตกต่างกัน ซึ่งโปรเซสเซอร์มักจะไม่สนใจ เนื่องจากจุดสนใจทั่วไปของ XSL-FO คือการสร้างเอกสารเพจ/เอกสารที่พิมพ์ออกมา โดยทั่วไปแล้ว เอกสาร XSL-FO จะทำหน้าที่เป็นสื่อกลาง หน้าที่หลักคือสร้างไฟล์ PDF หรือเอกสารที่สามารถพิมพ์เป็นเอาต์พุตที่จะแจกจ่าย ใน HTML/CSS หรือ XSL-FO การแจกจ่าย PDF เป็นผลลัพธ์สุดท้ายแทนที่จะป้อนภาษาการจัดรูปแบบบ่งชี้ว่าผู้รับยังคงไม่ได้รับผลกระทบจากความเก่งกาจที่เกิดขึ้นซึ่งเกิดจากความแตกต่างระหว่างล่ามของภาษาการจัดรูปแบบ ในทางกลับกัน เห็นได้ชัดว่าไม่มีวิธีง่ายๆ ที่เอกสารจะตอบสนองความต้องการที่แตกต่างกันของผู้รับได้ เช่น ขนาดหน้าตัวแปรหรือขนาดฟอนต์ที่ต้องการ หรือการปรับแต่งสำหรับหน้าหรือการพิมพ์
รูปแบบไฟล์ XSLFO
เอกสาร SL-FO นั้นเป็นเอกสาร XML โดยทั่วไป แต่ไม่เป็นไปตามสคีมาใดๆ แทนที่เอกสาร SL-FO จะเป็นไปตามไวยากรณ์ที่กำหนดไว้ในข้อกำหนดของภาษาของตนเอง มีสองส่วนที่จำเป็นในแต่ละเอกสาร XSL-FO:
- ส่วนที่ระบุรายการเลย์เอาต์เพจที่มีป้ายกำกับ
- ส่วนที่มีรายละเอียดทั้งหมดของข้อมูลเอกสารพร้อมมาร์กอัปที่กำหนดการแสดงเนื้อหาในหน้าต่างๆ ผ่านเค้าโครงหน้าต่างๆ
คุณสมบัติของเพจถูกกล่าวถึงในเค้าโครงเพจ ซึ่งสามารถกำหนดองค์กรสำหรับข้อความ เพื่อให้เป็นไปตามแบบแผนสำหรับภาษาเฉพาะ นอกจากนี้ ขนาดของหน้า ระยะขอบ และลำดับของหน้า (ซึ่งรับรองคุณสมบัติที่แตกต่างกันสำหรับหน้าคี่และหน้าคู่) ยังถูกกำหนดโดยโครงร่างหน้า
ส่วนข้อมูลของเอกสารแบ่งออกเป็นชุดของโฟลว์ ซึ่งแต่ละโฟลว์จะเชื่อมต่อกับเค้าโครงหน้า โฟลว์ล้อมรอบรายการของบล็อกในนั้น รายการบล็อกนี้อาจมีคุณสมบัติมาร์กอัปแบบอินไลน์หรือรายการข้อมูลข้อความ หรืออาจทั้งสองอย่างพร้อมกัน ระยะขอบของเอกสารอาจแสดงหมายเลขหน้าหรือส่วนหัวของบทด้วย ฟังก์ชันการทำงานของทั้งบล็อกและองค์ประกอบแบบอินไลน์ยังคงเหมือนกับใน CSS แต่กฎการเติมและระยะขอบบางข้อจะแตกต่างกันระหว่าง FO และ CSS
ทิศทางการวางหน้าถูกระบุทั้งหมดสำหรับส่วนขยายของบล็อกและอินไลน์ จึงทำให้เอกสาร FO ทำงานภายใต้ภาษาที่แตกต่างจากภาษาอังกฤษ ภาษาของข้อกำหนด FO ใช้คำว่าเริ่มต้นและสิ้นสุดแทนที่จะเป็นคำอธิบายเส้นทางไปทางซ้ายและขวา มาร์กอัปเนื้อหาพื้นฐานของ XSL-FO และกฎการเรียงซ้อนนั้นนำมาจาก CSS ภาษาของ XSL-FO ตกลงตามข้อกำหนดต่อไปนี้
หลายคอลัมน์
หน้าสามารถมีได้หลายคอลัมน์และบล็อก และสามารถขยายจากคอลัมน์หนึ่งไปยังอีกคอลัมน์หนึ่งตามค่าเริ่มต้น อนุญาตให้หลายหน้ามีความกว้างและจำนวนคอลัมน์ต่างกัน ลักษณะ FO ทั้งหมดเป็นไปตามขีดจำกัดของหน้าแบบหลายคอลัมน์
รายการ
รายการ XSL-FO ถูกสร้างขึ้นโดยบล็อกสองชุดที่จัดเรียงแก้มโดยขากรรไกร ตามหลักการแล้ว ในรายการ บล็อกทางซ้ายจะระบุตัวเลข สัญลักษณ์แสดงหัวข้อย่อย หรือสตริงข้อความ ในขณะที่บล็อกทางขวาอาจทำงานตามที่คาดการณ์ไว้ การกำหนดหมายเลขรายการ XSL-FO มักจะทำโดย XSLT
ตาราง
ตาราง FO คล้ายกับตาราง HTML/CSS ผู้ใช้สามารถเลือกแถวของข้อมูล จัดรูปแบบข้อมูล สีพื้นหลังสำหรับแต่ละเซลล์ การใช้ข้อมูลการจัดรูปแบบที่แตกต่างกัน ผู้ใช้มีสิทธิ์เลือกแถวแรกเป็นแถวส่วนหัวของตาราง สามารถแจ้งโปรเซสเซอร์ FO ได้อย่างชัดเจนเกี่ยวกับข้อกำหนดพื้นที่ของแต่ละคอลัมน์ หรือปรับข้อความให้พอดีอัตโนมัติในตาราง
การจัดทำดัชนี
XSL-FO 1.1 มีคุณสมบัติที่ช่วยในการสร้างดัชนีผ่านการอ้างอิงองค์ประกอบที่มาร์กอัปอย่างเหมาะสม
ประโยชน์
- เหมาะสำหรับการเผยแพร่ตามเนื้อหา
- สะดวกในการใช้
- ราคาถูก