Câu hỏi thường gặp về Giao thức Google Wave cho biết rằng [HTML] "không có các thuộc tính mong muốn" và "HTML làm cho OT (Biến đổi hoạt động) khó nếu không phải là không thể" [1]. Tại sao cái này rất? Có vấn đề gì nếu HTML được xử lý đơn giản dưới dạng văn bản thuần túy và sau đó OT được áp dụng?Hoạt động chuyển đổi có hoạt động trên các tài liệu có cấu trúc như HTML nếu chỉ được coi là văn bản thuần túy không?
Trả lời
Tôi không có một câu trả lời hoàn chỉnh nhưng tôi muốn nhìn thấy nhiều việc làm trên làm cho hiện mã nguồn mở thư viện chuyển đổi hoạt động làm việc với văn bản phong phú, vì vậy tôi sẽ đóng góp những gì Tôi biết.
Sự khác biệt quan trọng giữa HTML và lược đồ Wave dường như là cách định dạng văn bản được đánh dấu: một heirarchy của các thẻ lồng nhau cho HTML so với chú thích ban nhạc (trong phần cuối của tài liệu) với phạm vi cho Wave XML . Chú thích ngoài băng có lẽ là cách tự nhiên hơn để đánh dấu định dạng văn bản vì chúng cho phép các định dạng chồng chéo (không lồng nhau). Nó cho phép một cái gì đó như thế này (trong giả đánh dấu), mà sẽ không có XML hợp lệ bằng cách sử dụng đại diện lồng nhau:
(b) This is bold (i) while this range is both bold and italic (/b) and this last bit is just italic (/i)
liên quan, đây là relevant issue trong dự án ShareJS. Có lẽ họ có thể triển khai hỗ trợ văn bản đa dạng bằng cách chấp nhận một phần lược đồ XML Wave.
Tôi giả định ở đây bạn hiểu các khái niệm cơ bản về OT. Vấn đề chính khi thực hiện OT trên HTML dưới dạng văn bản thuần túy là việc kết hợp các thẻ html. Như một ví dụ đơn giản, nói rằng chúng ta đã có một tài liệu như sau:
Hello world
Alice sau đó quyết định thế giới cần được in đậm:
Hello <b>world</b>
Điều này có thể được biểu diễn bằng một thao tác chèn đôi trong Cựu Ước, sơ đồ :
Edit A: Keep 6 : Insert "<b>" : Keep 5 : Insert "</b>"
Nếu Bob quyết định rằng 'thế giới' nên nghiêng trước khi anh nhìn thấy chỉnh sửa của Alice, ông sẽ thêm các hoạt động
Edit B: Keep 6 : Insert "<i>" : Keep 5 : Insert "</i>"
Nếu máy chủ nhận được bản chỉnh sửa của Bob sau Alice, nó sẽ cần phải chuyển B thành A để trở thành B '.
Câu lệnh Keep không thay đổi thông qua quá trình chuyển đổi, nhưng Chèn "" được chuyển qua Chèn "" có thể trở thành Keep 3: Insert "" hoặc Insert "": Keep 3. Thường thì máy chủ sẽ được định cấu hình để đặt chỉnh sửa sau chỉnh sửa đầu tiên.
Edit B': Keep 6 : Keep 3 : Insert "<i>" : Keep 5 : Keep 3 : Insert "</i>"
Tại đây vấn đề trở nên rõ ràng. Áp dụng A sau đó B' vào chuỗi ban đầu cung cấp cho các html hợp lệ:
Hello <b><i>world</b></i>
Về mặt lý thuyết điều này có thể được giải quyết bằng cách thay đổi trước và sau khi chèn, nhưng điều này sẽ được lông cho các ví dụ phức tạp hơn, có khả năng liên quan đến một tài liệu quét toàn bộ cho mọi biến đổi.
Như câu trả lời khác đã lưu ý, có thể tránh được sự lộn xộn này bằng cách sử dụng chú thích ngoài băng + văn bản thuần túy.Một cách tiếp cận tôi chỉ thấy cho đến nay trong các giấy tờ học tập là để điều trị cấu trúc XML như một cây với các hoạt động OT bổ sung nút, xóa, ví dụ:
http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.100.74
Tôi đoán vấn đề cơ bản ở đây là với chèn đồng thời, kết quả cuối cùng luôn có thể sai ngữ nghĩa - nhưng với trường hợp của XML/HTML, kết quả cuối cùng có thể sai cú pháp. Việc sử dụng các chú thích không làm gì để giảm bớt sự không thống nhất ngữ nghĩa, nhưng đảm bảo rằng phép chuyển đổi sẽ tạo ra XML/HTML hợp lệ và vì vậy luôn có thể được trả về một cách độc đáo. Cảm ơn. – Nakedible
Hoàn toàn đúng – jazmit
Có approaches in OT hỗ trợ SGML (superset của XML), nhưng không có triển khai. Vì vậy, nó không phải là không thể! Mặc dù, tôi đồng ý, OT không phải là cách tiếp cận tốt nhất để kích hoạt XML. Điều này là do OT được thiết kế cho các cấu trúc dữ liệu tuyến tính. Nhưng HTML/XML phức tạp hơn nhiều: nó có các thuộc tính, và nó được xây dựng như một cái cây. Thực tế là nó là một cây có thể giải quyết được, nhưng các thuộc tính - được nhận ra như là một mảng kết hợp có thứ tự - không được OT hỗ trợ. Đơn giản vì mảng kết hợp không được OT hỗ trợ (hiện tại). Phương pháp trên thực sự đề xuất để coi các thuộc tính là một chuỗi: Ví dụ: "id = 'myid' value = 'mystuff'" Nhưng bạn có thể dễ dàng phá vỡ toàn bộ cú pháp của 'thuộc tính-chuỗi' của bạn, khi một người dùng xóa tất cả các thuộc tính, và một người khác chèn một "nhân vật trực tiếp sau" bí ẩn ". . có thể giải quyết trong một số thẻ div đó trông giống như <div ">
này, mà không phải là cú pháp hợp lệ
có lẽ đây bạn quan tâm:
CEFX là một dự án nhằm hỗ trợ XML - nó chết để kiến thức của tôi Nhưng nó sử dụng. Vì một lý do nào đó, không thể chỉnh sửa các phần tử xml chỉ chuỗi -
SDK Drive của Google hỗ trợ cấu trúc dữ liệu giống như đồ thị. y biết cách nó hoạt động.
Tôi đang phát triển một khung công tác hỗ trợ cấu trúc dữ liệu tùy ý. Hiện tại, hỗ trợ Text, Json, XML và HTML. Phương pháp này có cách tiếp cận khác: hãy kiểm tra: Yatta!
BTW: Giao thức Wave và mô tả Eric Drechsel được gọi là Chú thích trong Cựu ước. Nó thường được thừa hưởng để hỗ trợ văn bản đa dạng thức.
- 1. Cách chuyển đổi reStructuredText thành văn bản thuần túy
- 2. python chuyển đổi tài liệu văn phòng microsoft sang văn bản thuần túy trên linux
- 3. Hiệu quả hoạt động trên cấu trúc dữ liệu R
- 4. Thêm các phần tử vào DOM cho HTML thuần văn bản chỉ sử dụng JavaScript thuần túy (không có jQuery)
- 5. Chuyển đổi hoạt ảnh CSS3 thành JavaScript thuần túy
- 6. Bộ chọn CSS chỉ hoạt động nếu <tag> có nội dung</tag>
- 7. Tại sao hiển thị = "false" không hoạt động đối với bảng html thuần túy?
- 8. HTML tới văn bản thuần túy (cho email)
- 9. ASP cổ điển (VBScript) chuyển đổi mã HTML thành văn bản thuần túy
- 10. hoạt động chuyển đổi không có hoạt ảnh
- 11. Chuyển đổi ASCII thành văn bản thuần túy trong PHP
- 12. Thực hiện chuyển đổi hoạt động (không phải javascript)
- 13. Biến NSAttributedString thành văn bản thuần túy
- 14. Các đối tượng COM động có được coi là tài nguyên được quản lý không?
- 15. Chuyển đổi \ r văn bản \ n để readlines() hoạt động như dự định
- 16. Văn bản chưa được cấu trúc cho dữ liệu có cấu trúc
- 17. SSH: Khi đăng nhập, mật khẩu có phải là văn bản thuần túy/sniffable không?
- 18. Đây có phải là lỗi không? hoạt động phao được coi là số nguyên
- 19. Nhận văn bản thuần tuý từ một nhãn hiệu có chứa văn bản có dạng là
- 20. cấu hình đã thay đổi (thay đổi định hướng) và phá hủy Hoạt động - đây có phải là cách mà nó được cho là hoạt động không?
- 21. Tại sao Collections.frequency không hoạt động như mong đợi trên danh sách được chuyển đổi?
- 22. Tại sao toán tử = hoạt động trên các cấu trúc mà không được xác định?
- 23. ProxySelector của Java có hoạt động với các kịch bản cấu hình proxy tự động không?
- 24. Javascript hoạt động như chuyển đổi css3
- 25. Mã LaTeX chuyển đổi/phân tích cú pháp thành văn bản thuần túy
- 26. scala: chuyển đổi ngầm không hoạt động
- 27. Chỉ số địa không gian hoạt động như thế nào?
- 28. convertPoint: toView: Có vẻ như không hoạt động
- 29. Kích hoạt cấu hình Maven nếu không có cấu hình khác được kích hoạt
- 30. jquery .html() không hoạt động trên ie8
+1 cho [ShareJS discussion] (https://github.com/josephg/ShareJS/issues/1)! – mb21