2008-09-26 41 views
19

Có thư viện XSLT thuần túy là Python không?Thư viện XSLT thuần túy

Cài đặt libxml2 + libxslt hoặc bất kỳ thư viện C tương tự nào là vấn đề trên một số nền tảng mà tôi cần hỗ trợ.

Tôi thực sự chỉ cần hỗ trợ XSLT cơ bản và tốc độ không phải là vấn đề lớn.

Trả lời

9

Thật không may là không có bộ vi xử lý XSLT tinh khiết-python vào lúc này. Nếu bạn cần một cái gì đó có nền tảng độc lập hơn, bạn có thể muốn sử dụng bộ xử lý XSLT dựa trên Java như Saxon. 4Suite đang làm việc trên một trình phân tích cú pháp XPath thuần túy, nhưng nó không giống như một bộ xử lý XSLT thuần túy sẽ được sử dụng trong một thời gian. Có lẽ tốt nhất nên sử dụng một số khả năng chức năng của Python để thử và gần đúng bản định kiểu hiện có hoặc xem xét tính khả thi của việc sử dụng Java thay thế.

1

Bạn đã xem 4suite chưa?

+0

Các bộ phận của 4suite nằm trong C, không chắc chắn điều đó có quan trọng hay không. –

+0

Vâng, điều đó không quan trọng. Tôi đang tìm kiếm một triển khai Python tinh khiết. Tôi không muốn/không thể biên dịch (hãy để một mình cài đặt!) Bất kỳ C trên một số nền tảng. –

1

Nếu bạn chỉ cần hỗ trợ cơ bản và XML của bạn không quá điên, hãy xem xét xóa phần tử XSLT khỏi phương trình và chỉ sử dụng trình phân tích cú pháp DOM/SAX.

Dưới đây là một số thông tin từ PythonInfo Wiki:

[DOM] sucks lên toàn bộ một tập tin XML, giữ nó trong bộ nhớ, và cho phép bạn làm việc với nó. Mặt khác, Sax phát ra các sự kiện khi nó đi từng bước qua tệp.

Bạn nghĩ sao?

+0

Ý tưởng hay, nhưng trong trường hợp này tôi có các XSLT hiện có mà tôi muốn sử dụng trên các nền tảng mà ở đó tôi không thể biên dịch bất kỳ mã hoặc thư viện cài đặt nào. –

6

Tôi không nghĩ rằng bạn có thể làm điều đó trong cpython: không có triển khai XSLT python thuần túy.

Nhưng bạn có thể làm điều đó một cách nhỏ nhặt trong jython, sử dụng các API XSLT sẵn có của JVM. Tôi đã viết một bài đăng blog cho trường hợp cụ thể của việc thực hiện nó trên Google AppEngine, nhưng mã được đưa ra sẽ hoạt động dưới dạng jython trong mọi trường hợp.

Chuyển đổi với XSLT trên Google AppEngine và Jython

http://jython.xhaus.com/transforming-with-xslt-on-google-appengine-and-jython/

HTH,

Alan.

1

Ngoài ra còn có http://lxml.de/

"lxml là hầu hết các tính năng phong phú và dễ dàng sử dụng thư viện cho việc xử lý XML và HTML trong ngôn ngữ Python."

+1

Hmm. Xác định vị trí tuyên bố tiếp thị của "hầu hết các tính năng phong phú và dễ sử dụng" có vẻ hơi nhiều (trừ khi bạn đã thực hiện nghiên cứu đầy đủ về các tùy chọn và đã đi đến kết luận này một mình). – Rob

+0

lxml là, tôi khá chắc chắn, chỉ cần một Python ràng buộc xung quanh cùng một thư viện C chúng tôi đang cố gắng sử dụng ở đây: "[Bộ công cụ XML lxml là một ràng buộc Pythonic cho thư viện C libxml2 và libxslt.] (Http : //lxml.de/index.html). " –

+0

Ngoài ra, để trích dẫn [trang cài đặt] của lxml (http://lxml.de/installation.html): "Trừ khi bạn đang sử dụng phân phối nhị phân tĩnh (ví dụ: từ trình cài đặt nhị phân Windows), lxml yêu cầu cài đặt libxml2 và libxslt ... " –

Các vấn đề liên quan