XPath และ XSLT 2.0 สำหรับ. NET? [ปิด]


91

.NET 3.5 ไม่รองรับ XPATH 2.0 หรือ XSLT 2.0 อย่างสมบูรณ์ซึ่งแย่เกินไป มีใครรู้บ้างว่าสองสิ่งนี้จะรวมและรองรับอย่างเต็มที่ใน. NET เวอร์ชันใด ๆ ในอนาคตหรือไม่?


codeproject.com/Articles/24766/…ไลบรารี Java saxon ใช้ XSL 2.0 และ XQuery 1.0 เมื่อใช้ IKVM และ GNU Classpath คุณสามารถเข้าถึงไลบรารีนี้ใน. NET อย่างไรก็ตามอินเทอร์เฟซสำหรับการใช้ Saxon นั้นแตกต่างจากที่คุณใช้ใน. NET มาก จากหน้าบทความนี้คุณสามารถดาวน์โหลดอะแดปเตอร์อินเทอร์เฟซซึ่งช่วยเชื่อมช่องว่างระหว่างอินเทอร์เฟซ Saxon และ. NET XslCompiledTransform สิ่งนี้ทำให้การพอร์ตโค้ดง่ายขึ้นมากจากการใช้. NET XSL 1.0 เป็น Saxon XSL 2.0
gls123

3
คุณสามารถโพสต์คำขอคุณสมบัตินี้ได้ที่uservoice by Microsoft
Binoj Antony

คำตอบ:


130

ฉันไม่คิดว่าพวกเขาจะเพิ่มการรองรับ XPath 2.0 หรือ XSLT 2.0 เร็ว ๆ นี้

อย่างไรก็ตามคุณไม่ควรรู้สึกแย่หากสิ่งเหล่านี้ไม่ใช่ส่วนหนึ่งของ BCL ตราบใดที่คุณมีการใช้งานของบุคคลที่สาม:

Microsoft ให้ความสำคัญกับลูกค้า ถ้าลูกค้าไม่ต้องการก็จะไม่ทำให้


2009-11-18: ฉันติดต่อทีม XML ที่นี่ และได้รับคำตอบนี้:

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


ขณะนี้รายการนี้ได้รับการดูแลที่github.com/maxtoroq/dotnet-xml


22
ในตอนแรกพวกเขาสัญญาว่าจะใช้งาน - นั่นเป็นเหตุผลว่าทำไมจึงมีการใช้งานเพียงเล็กน้อยเพราะเมื่อ บริษัท ใหญ่เช่น Microsoft บอกว่าเราจะทำและเราจะมอบให้กับทุกคนในฐานะส่วนหนึ่งของ Windows ก็ไม่มีเหตุผลที่จะตั้งโปรแกรม แต่แล้ว MS ก็สูญเสียบุคคลสำคัญหลายคนในทีม XML และตั้งแต่นั้นมาการสนับสนุน 2.0 ก็หมดลง
CodeRipper

6
คำตอบนั้นดูคุ้นเคยอย่างน่าประหลาด - ฉันถามคำถามที่คล้ายกันเมื่อสองสามปีก่อนและได้รับคำตอบแบบเดียวกัน ความอัปยศ - XSLT 2.0 ดูเหมือนการปรับปรุงที่สำคัญในการใช้งานภาษา
Eamon Nerbonne

1
ปัญหาที่แท้จริงคือไม่มีตัวเลือกของบุคคลที่สามที่ได้รับการอัปเดตให้ทำงานบน. NET Standard / Core - และอีกหลายตัวเลือกใช้ JKVM ซึ่งหมายความว่าไม่สามารถอัปเดตได้ เมื่อพิจารณาถึงจำนวนผลิตภัณฑ์เชิงพาณิชย์ของบุคคลที่สามที่คุณเชื่อมโยงไปที่นั่นฉันไม่แน่ใจว่าบรรทัด "มุ่งเน้นลูกค้า" อธิบายอะไร ..
Jaykul

1
หากพวกเขามุ่งเน้นลูกค้าอย่างแท้จริงพวกเขาจะทำ นี่เป็นหนึ่งในปัญหาที่ได้รับการโหวตมากที่สุดใน UserVoice ทุกคนขอทานมัน XSLT ไม่ใช่เฉพาะ แต่มีสอนในชั้นเรียนระบบสารสนเทศส่วนใหญ่ เป็นรูปแบบการแลกเปลี่ยนข้อมูลพื้นฐาน
alirobe

2
FYI: คำขอคุณสมบัติ Net Core: github.com/dotnet/corefx/issues/2295สำหรับการสนับสนุน XPath / XSLT v2 & 3
JohnLBevan

23

ดูโพสต์บล็อกนี้

มีสาเหตุหลายประการที่ทำให้เราไม่ใช้ XSLT 2.0 และ XPath 2.0

ต้องใช้ความพยายามและทรัพยากรอย่างมากในการนำเทคโนโลยีทั้ง 3 มาใช้ (XQuery, XSLT 2.0 และ XPath 2.0) หลักการแนวทางของเราคือเราเชื่อว่าการสร้างเทคโนโลยีคิวรี XML ที่แพร่หลายทำให้ผู้ใช้ปลายทางสับสน เราอยากจะใช้อีกหนึ่งภาษาที่เราผลักดันให้ผู้คนเรียนรู้มากกว่าที่จะต้องสนับสนุนและอธิบายการสืบค้น XML และภาษาการแปลงอีกสามภาษานอกเหนือจาก XPath 1.0 และ XSLT 1.0 ซึ่งมีอยู่แล้วใน. NET Framework การมีลูกค้าและผู้ให้การสนับสนุนของเราต้องรับมือกับความซับซ้อนของภาษาแบบสอบถาม XML ที่ซับซ้อน 3 ภาษาซึ่งสองภาษามีลักษณะคล้ายกัน แต่ทำงานแตกต่างกันมากในกรณีของ XPath 2.0 และ XQuery ดูเหมือนว่าเราจะไม่เป็นประโยชน์


12
นั่นคือเมื่อ 5 ปีที่แล้วจากบล็อกชื่อ "ทำไมคุณไม่เห็น XSLT 2.0 หรือ XPath 2.0 ในเวอร์ชันถัดไปของ. NET Framework" (ฉันเน้น)
Brian Agnew

1
ขอบคุณ! ไม่ทันสังเกต! ไม่ยอมรับคำตอบนี้อีกครั้งโดยหวังว่าจะได้รับคำอธิบายที่ใหม่กว่า (แม้ว่าจะเป็นคำอธิบายที่ดี แต่ +1 ก็ยังคงอยู่)
Wim ten Brink

3
ที่กล่าวว่ามีสองสิ่งที่ควรคำนึงถึงเมื่อจัดการกับ XSLT ใน. NET: 1) รองรับ exslt: node-set () ซึ่งครอบคลุมข้อดีอย่างหนึ่งของ XSLT 2.0 และ 2) msxsl: script ช่วยให้คุณ กำหนดฟังก์ชันที่ซับซ้อนโดยพลการโดยตรงภายใน XSLT ของคุณโดยใช้ C # / VB / JScript.NET โดยไม่ต้องยุ่งกับ API ความสามารถในการขยาย เนื่องจากXslCompiledTransformใช้XPathNavigatorสำหรับการแสดงโหนดและส่วนหลังใช้ XDM อย่างสมบูรณ์คุณสามารถใช้ฟังก์ชัน XPath2 ทั้งหมด (เช่นตัวดำเนินการ<<และ>>) เป็นฟังก์ชันที่กำหนดเองได้
Pavel Minaev

1
ไม่ใช่การสื่อสารครั้งสุดท้ายในเรื่องนี้ เช่นblogs.msdn.com/xmlteam/archive/2007/01/29/xslt-2-0.aspx
thorn̈

11
2013 ไม่มีการเปลี่ยนแปลง :(
Evgeni Nabokov

12

ความเข้าใจของฉันคือทรัพยากร Microsoft XML จำนวนมากถูกเปลี่ยนจาก XSLT 2.0 ไปยัง LINQ เป็น XML ซึ่งในมุมมองของฉัน - ไม่ได้ระบุพื้นที่ปัญหาเดียวกันกับ XSLT เลย

LINQ เป็น XSD ควรจะปรับปรุง LINQ เป็น XML (เช่นเดียวกับประโยชน์ของ XML Schema ไวยากรณ์นั้นน่าเกลียดน้อยกว่า) แต่ Microsoft เปิดแหล่งที่มาใน CodePlex เมื่อไม่นานมานี้และดูเหมือนจะไม่มีการสนับสนุนจากชุมชน

นอกจากนี้ไม่น่าเป็นไปได้ที่ Microsoft จะเปิดตัวโปรเซสเซอร์ XSLT 2.0 ใหม่โดยไม่มีตัวแก้ไข XSLT 2.0 และตัวแก้ไขข้อบกพร่องที่รวมอยู่ใน Visual Studio ดังนั้นจึงต้องใช้ความพยายาม / เวลาเล็กน้อยในการยกเลิกการตัดสินใจ 'ไม่นำไปใช้' [อัปเดต] ตอนนี้มีส่วนขยาย XSLT 3.0 สำหรับ Microsoft VSCode (จัดการโดยตัวเอง)ที่ทำงานร่วมกับโปรเซสเซอร์ 3.0 XSLT ของ Saxon

ดังนั้นเราจึงมี Saxon.NET ซึ่งมีชื่อเสียงด้านการปฏิบัติตามมาตรฐานที่ไม่สามารถเข้าถึงได้และมีตัวเลือกการขยายที่ยอดเยี่ยมสำหรับ. NET


3

Microsoft ไม่มีแผนที่จะปล่อยการสนับสนุน XPath / XSLT 2.0 ใน. NET

XQSharpให้การใช้งานบุคคลที่สามของ XPath 2.0, XSLT 2.0 และ XQuery สำหรับ. NET

[แก้ไข: XQSharp 2.0 เบต้า (พร้อม XSLT 2.0) ได้รับการเผยแพร่แล้ว]


@ Oliver-Hallam: การคาดการณ์นี้ยังใช้ได้หรือไม่? คุณอยู่ในการติดตาม?
Dimitre Novatchev

@ Oliver-Hallam: XQSharp-XSLT 2.0 จะเร็วกว่า Saxon.NET หรือไม่?
Dimitre Novatchev

@ Dimitre-Novatchev - ตลกที่คุณถามตอนนี้; เราควรมีการใช้งาน XSLT เวอร์ชันเบต้าในอีกไม่กี่ชั่วโมงข้างหน้า! สำหรับความเร็วเราเชื่อว่าประสิทธิภาพของเราจะดีพอ ๆ กับ Saxon แม้ว่าเราจะมีอคติดังนั้นเราก็ชอบความคิดเห็นที่เป็นอิสระ!
Oliver Hallam

1
XQSharp เรียกว่า XMLPrime
Mike Gale

2

ฉันไม่อยากเชื่อเลยว่าพวกเขาจะไม่อยู่ในขั้นตอนใดเนื่องจากเป็นเทคโนโลยี W3C หลัก อย่างไรก็ตามฉันไม่พบข้อมูลอ้างอิงในปัจจุบันเกี่ยวกับสิ่งเหล่านี้ (เฉพาะข้อมูลที่โพสต์ไว้นานแล้ว)

ในอนาคตอันใกล้นี้คุณควรดูที่Saxonซึ่งรองรับ Xpath / XSLT เวอร์ชันที่คุณต้องการ


ฉันจะใช้ AltovaXML แทน: altova.com/altovaxml.htmlฟรีและรองรับ Java, .NET และ WIN32 ผ่าน COM ฉันหวังว่า. NET จะสนับสนุนโดยกำเนิด
Wim ten Brink

1
AltovaXML API ไม่มีประโยชน์แถมยังเป็นโค้ดเนทีฟในขณะที่ Saxon ได้รับการจัดการ
Max Toro

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