2009-05-08 49 views
20

Tôi đã chuyển đổi toàn bộ trang web của mình thành XML/XSL và tôi muốn biết tất cả các vấn đề hiện tại có thực hiện XSLT phía máy khách.XSLT phía máy khách

Dưới đây là những người tôi đã biết (từ kinh nghiệm đầu tay):

  • Cross-miền file XSL (đây là một vấn đề an ninh và trình duyệt không chéo)
  • disable-ra-thoát (điều này không làm việc trong FF ... họ coi đó là một vấn đề an ninh)

Cũng như đối với hỗ trợ trình duyệt này là tất cả tôi biết:

  • Opera 9+
  • FF 1.0 trở lên
  • SF 2.0 + (i có thể sai về vấn đề này)
  • Chrome
  • IE 6,0 +

Bất kỳ người khác sẽ là hữu ích quá :)

Chỉnh sửa:

Đối với lỗ hổng thứ hai, có cách giải quyết tốt cho phép bạn chuyển xhtml vào xsl của bạn. Nó hoạt động bằng cách thực sự chuyển đổi và đảm bảo XHTML của bạn là XML hợp lệ và đặt nó vào XML của bạn dưới dạng XML. Sau đó, trong XSL của bạn, bạn sao chép xml;) và xuất nó dưới dạng XHTML.

+1

Tôi cũng rất tò mò về điều này. Tôi thực sự thích sử dụng xslt phía máy khách và tôi chưa bao giờ gặp bất kỳ vấn đề nào với nó, nhưng tôi luôn tự hỏi liệu có bất kỳ nhược điểm nào đối với nó hay không. – Zifre

+2

Nó quá tốt là đúng :). Khả năng giảm tải tất cả tạo mẫu cho ứng dụng khách ... Và cho phép chúng lưu trữ mẫu ... Toàn bộ thiên tài của nó. Năm 2004 nó đã được hỗ trợ gần như qua trình duyệt, trong năm 2009 ... đó là, từ những gì tôi hiểu. –

+0

Tại sao không chỉ sử dụng XHTML làm cơ sở của bạn và sau đó áp dụng các biến đổi từ đó? Tại sao bắt đầu với XML? Bạn cũng sẽ sử dụng các tiêu chuẩn web khác như CSS hay những thứ như JavaScript và hình ảnh cơ bản? Mỗi tệp bổ sung sẽ gây ra các vấn đề về hiệu suất cho đến khi được lưu trữ ở phía máy khách. – JamesEggers

Trả lời

14
  • Tốc độ: Trình duyệt cần phải áp dụng việc chuyển đổi XSLT trước khi render HTML, do đó người dùng sẽ phải đợi lâu hơn để xem trang. Các công cụ XSLT được các trình duyệt sử dụng có thể không phải là đỉnh cao. Trên Mac OS X, trình duyệt có thể đóng băng trong khi XML được chuyển đổi và gây ra con trỏ "quay bóng bãi biển", do đó người dùng có thể nhấn vào màn hình và làm tổn thương chính anh ta.

  • Trợ năng: Điều gì về các trình duyệt không có trong bộ đó, chẳng hạn như trình đọc màn hình? Những người dùng đó có quan trọng với bạn không?

+4

Đã tải tất cả tạo mẫu cho máy khách (do đó tiết kiệm một lượng lớn CPU), tôi có danh sách các trình duyệt tôi biết XSLT làm việc với vì vậy tôi gửi cho họ XML/XSL thực tế. Nếu trình duyệt không có trong danh sách trắng thì máy chủ sẽ thực hiện XSLT cho chúng và gửi HTML. Cảm ơn, tôi sẽ thêm điều này vào danh sách ưu/khuyết điểm của tôi. –

+4

Tôi không chắc chắn tôi đồng ý với tuyên bố chăn rằng nó sẽ _always_ được chạy chậm hơn xslt/xml chuyển đổi trên máy khách: điều này có thể (và khá thường xuyên trong thực tế) có nghĩa là ít công cụ để tải trên n/w (xsl/xml có thể nhỏ hơn html/xhtml): tùy thuộc vào cơ chế được so sánh với (chuyển đổi XSLT của JSP/ASP/phía máy chủ) - cách tiếp cận phía máy khách này thực sự có thể giảm thời gian xử lý từ máy chủ đến máy khách ... và nên quy mô tốt hơn với nhiều người dùng đồng thời hơn ... – monojohnny

2

Tôi đã tìm thấy các tham số truyền tới xsltfiles khó để giữ cho việc lai chéo có thể. Bây giờ tôi hỗ trợ FF và IE nhưng Chrome đã bị xóa vì nó ..

+0

bạn có khóa mã hóa làm ví dụ hay không, tôi có thể làm điều này hoạt động tốt trong chrome. –

+0

Có, nhưng Chrome không quá quan trọng đối với chúng tôi, vì vậy tôi đã bỏ nó ra. cho (i = 0; i Peter

+2

Có thể tôi tắt nhưng khi đọc "XSLT phía máy khách", tôi giả định câu hỏi được gọi đơn giản XML -> dịch XHTML với XSLT tĩnh được liên kết qua thay vì công cụ JavaScript XSLT. Nếu vậy, các tham số truyền là không thích hợp vì tập hợp đầu vào duy nhất là các tài liệu XML. –

0

Tệp XSLT là một đối tượng khác cần được tải xuống và trình duyệt sẽ chỉ tìm nạp 2 hoặc 3 mục song song. Kinh nghiệm của tôi là hiệu suất tổng thể (tải xuống và tạo) chậm hơn đáng kể.

Ngoài ra, tùy thuộc vào mức độ phức tạp và dư thừa của dữ liệu, bạn có thể tải xuống nhiều hơn mức bạn thực sự cần - tức là. nếu HTML đã được hiển thị.

+0

Tôi không nghĩ rằng đây là một đối số hợp lệ. Bạn không sử dụng CSS vì tệp khác của nó sẽ được tải xuống? Nó có thể được lưu trữ giống như CSS. –

+0

@Chad Bạn có nói rằng XSLT của bạn sẽ không giữ các chuẩn web thực sự như CSS không? Liệu XSLT có chuyển đổi tệp XML của bạn thành HTML và thiết kế dựa trên bảng hay nó sẽ sử dụng CSS? Đây là một đối số rất hợp lệ trong quan điểm của tôi vì nếu bạn đang dùng XML và chuyển đổi nó thành HTML nhưng không sử dụng các tiêu chuẩn web, thì bạn có thể làm sai. Ngoài ra, nếu mục tiêu của bạn là chuyển đổi nội dung HTML sang định dạng khác, có thể sử dụng XHTML trước và sau đó chuyển đổi nó có thể là một lựa chọn tốt hơn. – JamesEggers

+3

Tôi sẽ sử dụng tất cả các công nghệ web. CSS (Thiết kế), XSL/XHTML (Cấu trúc), XML (Dữ liệu), JS (Hành vi). Lượng dữ liệu phân tách rất đẹp. –

5

Trên mặt trước hiệu suất ... hãy xem xét phần lớn các khách hàng hiện có 2 CPU và 2 GB RAM, và hầu hết các máy chủ đều không ... Có hai CPU + 2 GB trên mỗi máy khách. Vì vậy, chắc chắn logic rằng việc tải xuống các phép biến đổi XSLT sẽ cải thiện khả năng mở rộng và việc lưu vào bộ nhớ cache CSS + XSLT + JS nên giảm lưu lượng truy cập tổng thể.

Có nói rằng tôi đã thử sử dụng XSLT để tạo XHTML chứa SVG trong quá khứ và đã có lỗi sử thi. Trang lớn nhất chỉ đơn giản là quá lớn (3.000+ mục trong một chỉ mục) và IE sử dụng DOM để thực hiện phép biến đổi XSLT, khiến cho nó bắt đầu tấn công. Các biến đổi tương tự được thực hiện trong xerces-j (trên máy chủ, trên cùng một hộp dev) nhanh hơn khoảng 1000 lần.

Đó là thời gian cao mà các trình duyệt-khỉ có được với chương trình ;-)

Một cuộc thảo luận thú vị. Cảm ơn vì đã nuôi nó.

Chúc mừng. Keith.

+0

Tôi chưa thử SVG, bởi vì nó không phải là trình duyệt chéo. Tôi biết có một plugin mà adobe cung cấp, một công nghệ tuyệt vời như vậy. http://raphaeljs.com/ <- soo cool ... –

+0

tự hỏi làm thế nào mà là tìm kiếm 8 năm sau đó, P –

+1

lol, có 8 năm sau đó. XSLT vẫn hiển thị. –

1

tôi đã làm việc khoảng 1 năm tại một dự án mà chúng tôi sử dụng XSLT + XML-> html (mặc dù chỉ có server-side)

nhược điểm lớn tôi gặp phải: không có công cụ tốt cho thế hệ XSLT mà hướng nạc phát triển web. không xem trước html. không xác nhận. kết quả xslt là một tổng số lộn xộn không ai có thể hiểu được. đó không phải là lỗi của nhà thiết kế xslt, mà là kết quả từ mô hình xử lý xslt.

phân lớp giữa xslt/xml/url trở nên phức tạp hơn mức cần thiết. không có cách nào bạn có thể lập trình theo định hướng thành phần.

thường cần nhiều tệp xslt, điều này sẽ dẫn đến nhiều lượt tải xuống ở phía máy khách. nếu không nó sẽ dẫn đến sao chép mã lớn mặc dù dự án.

tôi sẽ xem đây là một hình thức tối ưu hóa sớm. bạn sẽ bắt đầu bằng cách sử dụng một khung công tác "bình thường" như wicket, jsf, tapestry, gwt v.v., sau đó nếu nó bật ra máy chủ của bạn preformance là cpu-bound bạn có thể ocnsider viết lại các phần thường được sử dụng nhất của apllication theo cách đó.

otoh, nó có lợi ích thực sự nếu bạn cần cung cấp cả giao diện xml api + giao diện html.

+5

về cơ bản tôi đã thay thế smarty (một công cụ tạo khuôn mẫu PHP) bằng XSLT phía máy khách. Và khi làm như vậy tôi đã phải cô lập hoàn toàn dữ liệu, đó là một điều tuyệt vời. Ví dụ tôi có thể viết một giao diện di động dễ dàng ngay bây giờ, bởi vì mọi thứ được tách ra. Cho đến nay id nói có một đường cong học tập nhưng cơ bản của bạn trong tương lai chứng minh ứng dụng của bạn nếu bạn sử dụng phương pháp này. –

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