เหตุใด XSLT จึงไม่ค่อยถูกใช้บนเว็บ? [ปิด]


12

XSLT เป็นมาตรฐานที่ผู้ใหญ่ยอมรับอย่างกว้างขวาง

มันสามารถใช้ในเบราว์เซอร์ (แม้แต่ใน IE เก่า) และบนฝั่งเซิร์ฟเวอร์ (nginx มีโมดูล XSLT ซึ่งสามารถใช้ได้จากภาษาการเขียนโปรแกรมแน่นอน) การใช้งานของมันจะรวบรวมและดังนั้นควรจะเร็วกว่า Python หรือ JS การติดตั้ง JS Saxon JS สามารถใช้อย่างน้อยเป็นทางเลือก จินจา, เชิงมุม, รูบี้ของ Slim, ASP และ PHP เทมเพลตยังไม่ได้ใกล้เคียง

เท็มเพลต XSL สามารถตรวจสอบได้ง่ายใน IDE IDEs สามารถช่วยกับ Jinja หรือ Angular ได้กี่ตัว

ดูเหมือนว่าเป็นความคิดที่สมบูรณ์แบบในการแยกส่วน UI และข้อมูลด้วย XSLT

เป็นที่ยอมรับการใช้งานสามารถให้ผลลัพธ์ที่แตกต่างในบางกรณีมุม แต่มันเป็นปัญหาเฉพาะกับ templating ในฝั่งไคลเอ็นต์ และมันก็เหมือนกับ HTML, CSS และทุกอย่างที่ทำในฝั่งไคลเอ็นต์

ดังนั้นทำไมไม่ XSLT


4
JSON ง่ายกว่า XML ฉันไม่ได้เป็นเด็กเมื่อคืนนี้ฉันได้ยินนักพัฒนาบอกว่ารู้สึกซาบซึ้งที่พวกเขาไม่เคยใช้ XSLT อีกครั้ง ดู: stackoverflow.com/questions/4862310/json-and-xml-comparison
Dan Wilson

6
คุณเคยลองทำสิ่งที่ไม่สำคัญกับมันหรือไม่?
PlasmaHH

9
เป็น 'เพราะมันเป็นความเจ็บปวดที่จะใช้' คำตอบที่ถูกต้อง .. ?
ท้าย

2
@thisextendsthat: ไม่เพราะ JavaScript และ CSS เคยเป็นความทรมานที่จะใช้ แต่ก็ยังใช้กันอย่างแพร่หลาย
JacquesB

4
@JacquesB JS และ CSS ยังคงมีความทุกข์ทรมานที่จะใช้
แอนดี้

คำตอบ:


39

XSLT ไม่มีบทบาทที่เป็นประโยชน์ในเว็บเชิงโต้ตอบที่ทันสมัย จุดประสงค์ของ XSLT คือการแปลงจากภาษา XML หนึ่งไปเป็นอีกภาษาหนึ่ง แต่จริงๆแล้วคุณไม่จำเป็นต้องทำเช่นนั้นในตอนแรก เทคโนโลยีมีประสิทธิภาพรวดเร็วและรองรับได้ดีเพียงใดหากคุณไม่มีปัญหาที่เทคโนโลยีออกแบบมาเพื่อแก้ปัญหา

มีสาเหตุหลายประการที่ทำให้เคสการใช้งานสำหรับ XSLT หายไป:

  • HTML ได้รับรางวัล XSLT น่าจะมีประโยชน์สำหรับการแปลงเนื้อหา "rich text" ในบางรูปแบบมาร์กอัปความหมายเป็น HTML แต่ HTML นั้นอยู่ในรูปแบบที่ดีอย่างสมบูรณ์แบบดังนั้นทำไมไม่ใช้เพียงแค่นั้นกับเนื้อหาในตอนแรกและข้ามการแปลง?
  • CSS มีประสิทธิภาพมากขึ้น หนึ่งในคำสัญญาของ XSLT ก็คือคุณสามารถทำให้มาร์กอัปซอร์สโค้ดสะอาดและมีความหมายแล้วแปลงเป็น "presentational HTML" ซึ่งใช้งานข้ามเบราว์เซอร์และที่ซึ่งคุณสามารถจัดเรียงองค์ประกอบต่างๆได้ แต่คุณไม่ต้องการ HTML ที่นำเสนอในปัจจุบันคุณสามารถใช้ semantic HTML และ CSS สามารถใช้สไตล์และเลย์เอาต์ที่จำเป็น
  • XML ไม่ได้กลายเป็นรูปแบบที่แพร่หลายสำหรับข้อมูล เมื่อดึงข้อมูล SQL จากฐานข้อมูลมันง่ายกว่ามากที่จะรวมโดยตรงลงในเทมเพลตแทนที่จะแปลงเป็น XML ก่อนแล้วจึงแปลงผ่าน XSLT และ JSON มีทั้งหมด แต่แทนที่ XML สำหรับข้อมูลที่มีโครงสร้างในฝั่งไคลเอ็นต์
  • XSLT ถูกออกแบบมาเพื่อแปลงเอกสารทั้งหมดในเวลาเดียวกัน แต่ในหน้าเว็บแบบอินเทอร์แอคทีฟที่ทันสมัยข้อมูลขนาดเล็กจะถูกดาวน์โหลดทีละน้อยตลอดเวลาและรวมเข้ากับหน้าเว็บ
  • ข้อมูลไม่ซับซ้อนนัก สำหรับกรณีการใช้งานส่วนใหญ่รูปแบบเทมเพลตที่เรียบง่ายพร้อมตัวยึดและตัวทำซ้ำจะช่วยแก้ปัญหาได้ดี XSLT มีประสิทธิภาพมากกว่า แต่คุณไม่ต้องการพลังพิเศษมากนักและมีค่าใช้จ่ายสูงในความซับซ้อนและความน่าเกลียด

XSLT ขยายตัวจากการเผยแพร่ที่คุณสามารถมีกระบวนการทางเดียวจากรูปแบบแหล่งที่มีโครงสร้างหนึ่งไปยังรูปแบบการเผยแพร่หลายรูปแบบเช่นพิมพ์ PDF และหน้าเว็บแบบคงที่ เว็บไซต์ส่วนใหญ่ไม่เหมาะกับกรณีการใช้งานนี้


คำตอบที่ให้ข้อมูลมาก (+1)
Giorgio

2
ฉันไม่ทราบว่าประสบการณ์ของฉันเหมือนกันกับผู้ใช้คนอื่น แต่หนึ่งใน "จุดขาย" ของ XSLT ตามที่อธิบายให้ฉันถูกลดแบนด์วิดท์: ถ้าคุณมีหน้าใหญ่ปกติคุณส่ง XML น้อยที่สุด ( <chapter><title><par>...) และ XSLT จะ "ขยาย" กับdiv, table, trตามต้องการด้วยนอกจากนี้ว่ามันจะถูกเก็บไว้ ดังนั้น (อีกครั้งฉันไม่ทราบว่า "ข้อดี" นี้แพร่หลายไปมากเพียงไร) แบนด์วิดท์ที่ได้รับการปรับปรุงจะได้รับผลกระทบเช่นกัน (และความจริงที่ว่าหน้า HTML ส่วนใหญ่มีขนาดค่อนข้างเล็ก)
SJuan76

@ SJuan76: นั่นเป็นแนวคิดที่จะเปลี่ยนมาร์กอัปความหมายเป็น HTML ที่นำเสนออย่างละเอียดที่ใช้ตารางสำหรับการจัดวาง โชคดีที่มันไม่จำเป็นต้องใช้ตารางสำหรับโครงร่างอีกต่อไป
JacquesB

1
@JacquesB ฉันใช้คู่นั้นสำหรับหน้านั้น: programaths.be/job/job.xmlและทำให้สมบูรณ์ XML ใช้เพื่อแสดงหน้าและตรวจสอบคำตอบของแบบสอบถามที่สร้างขึ้น มันไม่เกี่ยวกับการจัดรูปแบบในตาราง แต่ XML ให้ฉันเป็นนามธรรมที่ดี แน่นอนว่าฉันไม่สนเรื่องการโกงคนอื่น แต่มันแสดงให้เห็นว่าแม้ในยุคปัจจุบันมันมีประโยชน์มาก!
โปรแกรม

9

ขึ้นอยู่กับสิ่งที่คุณหมายถึงโดย "ในเว็บ"

XSLT ใช้กันอย่างแพร่หลายมาก เท่าที่เราสามารถตัดสินจากตัวชี้วัดเช่นจำนวนคำถาม StackOverflow มันเป็นภาษาการเขียนโปรแกรม 30 อันดับแรกซึ่งอาจทำให้มันเป็นภาษาการเขียนโปรแกรมเฉพาะข้อมูลบนโมเดลหลังจาก SQL

แต่ XSLT ไม่ได้ใช้กันอย่างแพร่หลายในฝั่งไคลเอ็นต์นั่นคือในเบราว์เซอร์ โดยปกติจะใช้ฝั่งเซิร์ฟเวอร์เพื่อส่งเนื้อหาตามต้องการเพื่อตอบสนองคำขอ HTTP หรือใช้ในโหมดแบทช์เป็นส่วนหนึ่งของเวิร์กโฟลว์การเผยแพร่ แน่นอนว่ามันใช้กับแอพพลิเคชั่นมากมายที่มีส่วนเกี่ยวข้องกับเว็บเช่นในการพิมพ์สิ่งพิมพ์

มีสาเหตุหลายประการที่ XSLT ไม่ได้ใช้อย่างกว้างขวางในเบราว์เซอร์ เหตุผลหลักคือการสนับสนุน XSLT ที่สอดคล้องได้ดีมาจากผู้จำหน่ายเบราว์เซอร์ช้ามาก; ไม่มีใครต้องการใช้มันจนกว่าจะมีให้บริการในทุกเบราว์เซอร์และเมื่อถึงเวลาที่มีให้ในทุกเบราว์เซอร์สิ่งที่ผู้คนต้องการทำในเบราว์เซอร์ก็เปลี่ยนไป (จำได้ว่า "Web 2.0") และ XSLT ในเบราว์เซอร์ไม่ได้ช่วยให้คุณสร้างแอปพลิเคชันแบบโต้ตอบหรือดึงข้อมูลโดยใช้ AJAX

Saxonica (ข้อจำกัดความรับผิดชอบนี่คือผลิตภัณฑ์ของฉัน) พยายามที่จะเสียบช่องว่างเหล่านี้กับ Saxon-JS แต่ผลิตภัณฑ์นั้นเป็นผู้มาที่หลังเพื่อปาร์ตี้และการพัฒนาเว็บไซต์ฝั่งไคลเอ็นต์นั้นขับเคลื่อนด้วยแฟชั่นดังนั้นจึงไม่เพียงพอที่จะมี ผลิตภัณฑ์ที่ทำเครื่องหมายที่กล่องเทคนิคทั้งหมด ส่วนหนึ่งของการขับเคลื่อนด้วยแฟชั่นคือเว็บไซต์ส่วนใหญ่ที่มุ่งเน้นข้อมูล (แตกต่างจากเชิงเอกสาร) ได้ย้ายไปยัง JSON แทนที่จะเป็น XML เนื่องจาก JSON นั้นง่ายต่อการจัดการจาก Javascript ได้ง่ายกว่ามาก

อีกประเด็นคือ XSLT เป็นภาษาความรักหรือเกลียดมัน กระบวนทัศน์ที่เน้นการประกาศตามกฎและเน้นการใช้งานให้กับหลาย ๆ คนเนื่องจากมีลักษณะระดับสูง แต่สามารถนำไปใช้กับผู้ที่มีประสบการณ์ในการเขียนโปรแกรมเพียงอย่างเดียวคือการเขียนรหัสจำเป็นที่บอกคอมพิวเตอร์ว่าจะต้องทำอะไร สั่งอะไร


3

ฉันพลิกกลับไปกลับมาระหว่างตอบคำถามนี้และปิดเป็นหลักตามความเห็น ดังนั้นนี่คือการพลิกของฉัน:

ในระยะสั้นเพราะ XML ทำให้ภาษาการเขียนโปรแกรมเส็งเคร็ง บางสิ่งที่มีความหมายของ XSLT แต่ไวยากรณ์ที่ดีกว่านั้นจะเป็นเรื่องที่แตกต่างกันโดยสิ้นเชิงฉันคิดว่า ยกตัวอย่างเช่นมีบางภาษาที่ใช้ภาษา XML การแปลงแบบเจ๋ง ๆ

XSLT ไม่สามารถตัดสินใจได้ว่าจะต้องการเป็นภาษาทรี - เขียนใหม่ภาษาที่ใช้งานได้หรือภาษาที่ใช้ในการดำเนินการ มันมีคุณสมบัติของทุกอย่าง แต่มันก็ไม่ได้ดีเลย สำหรับสามด้านใดมีภาษาที่ดีกว่าอยู่ที่นั่น


ไวยากรณ์ของ XML แน่นอนอาจดู verbose แต่มีภาษาอื่นอีกบ้างที่รองรับได้ทุกที่
George Sovetov

XSLT เป็น IMO ภาษาที่ใช้งานได้ดี ที่ใดที่มันล้มลงคือการผสมผสานมุมมองกับตรรกะการแปลง
RubberDuck

4
@GeorgeSoverov ทำไมการสนับสนุนจึงสำคัญทุกที่ จำเป็นต้องได้รับการสนับสนุนบนเซิร์ฟเวอร์ของคุณเท่านั้น
Esben Skov Pedersen

1
ฉันคิดว่าความน่าเกลียดของภาษานั้นไม่เกี่ยวข้องถ้ามันใช้กรณีการใช้ที่เกี่ยวข้อง แค่เห็นความสำเร็จของ JavaScript ปัญหาเกี่ยวกับ XSLT เป็นกรณีการใช้งานไม่ได้อยู่ที่นั่น
JacquesB

1
คุณแสดงให้เห็นอย่างแน่นอนว่ามันเป็นคำถามที่ดึงดูดคำตอบจากความคิดเห็น ...
Michael Kay

0

เนื่องจากตัว XML เองดูเหมือนว่าเป็นขยะที่ล้าหลังรองรับการใช้งานได้มากถึง 99.9% ของกรณี

กรณีใช้งานเพียงอย่างเดียวซึ่ง XML ไม่มีการแทนที่ที่เหนือกว่าในทันทีคือสิ่งต่าง ๆ เช่น docx หรือ odf และเป็นไปได้ว่า SGML น่าจะดีกว่า * นั่นคือเรามีโครงสร้างเอกสารที่สมบูรณ์อย่างไม่น่าเชื่อกับทุกสิ่งที่ซ้อนกันภายในด้วยการแปลงขนาดใหญ่ที่ใช้เพื่อให้สามารถปรากฏบนหน้าจอและเครื่องพิมพ์ได้อย่างถูกต้อง

เกือบตลอดเวลา XML ใช้สำหรับการส่งผ่านข้อมูลที่มีโครงสร้างและปรากฏว่า XSLT ถูกออกแบบมาเพื่อแปลงข้อมูลเอกสารที่มีโครงสร้างเป็นข้อมูลเอกสาร กรณีการใช้งานกำลังจะตาย JSON ดีกว่า XML สำหรับข้อมูลที่มีโครงสร้างโดยตรง ** ทั้ง markdown และ YAML นั้นเหนือกว่าในรูปแบบข้อมูลที่เบา XML ตัวแรกคือตัวแยกวิเคราะห์ใน Java และ Javacript JSON ทำลายสิ่งกีดขวางนั้นโดยใช้ประโยชน์จาก parser ในตัวสำหรับกรณีที่แหล่ง JSON นั้นเชื่อถือได้ (ซึ่งส่วนใหญ่เมื่อพวกมันยังเด็ก)

และโลกก็เปลี่ยนไป ข้อได้เปรียบของห้องสมุดในตัวเป็นข้อได้เปรียบเล็กน้อยในขณะนี้ XHTML ถูกปฏิเสธทันทีและการแทนที่ไม่ได้สืบทอดมาจากมัน แต่มาจากรุ่นก่อน

ตอนนี้ XML ถูกใช้สำหรับการพูดคุยโดยตรงกับคนที่ต้องการรับมันและมันถูกสร้างขึ้นในผ้าทั้งหมดในรูปแบบที่ต้องการหรือในทางกลับกันมันจะถูกอ่านและแยกวิเคราะห์เป็นโมเดลวัตถุโดยตรงจากแบบฟอร์มที่ส่งมาเนื่องจากไม่มี รูปแบบการจัดเก็บหรือรูปแบบการแลกเปลี่ยนสากลเปลี่ยนจาก schema เพื่อ schema ไม่จำเป็น

* พวกเขาสอนในวิทยาลัยว่า SGML ไม่เคยดำเนินการ พวกเขาโกหก

** ฉันได้ยินเรื่องร้องเรียนเกี่ยวกับรูปแบบตัวเลขที่ไม่ดีใน JSON ในทางกลับกัน XML ไม่มีรูปแบบตัวเลขดังนั้นเพียงแค่บรรจุข้อมูลทุกประเภทในสตริงยังคงชนะ XML

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.