2009-09-15 19 views
6

Tôi đang tìm định nghĩa này để làm cho trình kết xuất HTML của tôi phù hợp hơn một chút. Hiện tại, nó đoán được khoảng trống nào cần giữ lại, cái nào sẽ sụp đổ và cái gì để ném. Tiêu chuẩn SGML khó tìm và tiêu chuẩn HTML dường như không xử lý đối tượng với độ sâu yêu cầu cho nhu cầu của tôi.Định nghĩa các quy tắc khoảng trắng HTML?

Hiện tại trình kết xuất của tôi phân tích cú pháp HTML thành một cây và sau đó bố cục đệ quy truyền đến vị trí tất cả các phần tử và nội dung của chúng. Tôi đang thử nghiệm với việc ném một số khoảng trống trong giai đoạn phân tích cú pháp, tức là không phát ra khoảng trắng chỉ các khoảng văn bản trong một số trường hợp nhất định. Mà kinda làm việc cho phần lớn các trường hợp, nhưng có một vài trường hợp cạnh công bằng mà đang nhận được khó khăn để đối phó với.

(Tôi cũng đang làm việc trên phân lớp trình chỉnh sửa của điều khiển HTML và giải pháp thời gian bố cục đang là một vấn đề nhỏ trong trình chỉnh sửa, do đó tôi làm việc để đưa chúng vào giai đoạn phân tích cú pháp. t có sẵn cho đến khi thời gian reflow, đó là một thời gian sau khi bạn đã chỉnh sửa tài liệu.)

Cháy đi với liên kết/ngọn lửa.

Trả lời

5

Tôi nghĩ rằng phần 9.1 White space in the HTML 4 specification là những gì bạn đang tìm kiếm.

+0

tôi đọc đó và nó không có chi tiết tôi cần. Hiện đang xem qua tài liệu trình phân tích cú pháp HTML 5 để xem cách nó bao gồm khoảng trắng xung quanh các phần tử. – fret

3

Nếu bạn đang viết trình phân tích cú pháp HTML của riêng mình, thì tôi khuyên bạn nên sử dụng thuật toán phân tích cú pháp trong thông số HTML 5. http://www.whatwg.org/html5 Nó bao gồm một số lượng lớn các trường hợp cạnh và góc, và sự kỳ lạ chung của trình duyệt. Các trình duyệt không tuân theo các quy tắc SGML, nhưng tất cả chúng đều hướng đến việc thực hiện những gì HTML 5 spec nói, hoặc tương đương chức năng của nó. Có một số trình phân tích cú pháp nguồn mở có sẵn để thực hiện thuật toán, vì vậy nó cần có mọi thứ bạn cần.

+0

Bây giờ tôi đã có một chút thời gian để đọc kỹ thông số HTML5, cũng như các phần xử lý phân tích cú pháp, tôi không tiến gần hơn đến việc tìm ra các ký tự khoảng trắng nào được kết xuất và biến mất. – fret

+0

Phải. Không gian trắng nào được hiển thị là một câu hỏi khác với câu hỏi mà bạn đã hỏi, đó là không gian màu trắng có thể được ném ở giai đoạn phân tích cú pháp. Hãy nhớ rằng css như không gian trắng: có thể được áp dụng trước bởi javascript sau giai đoạn phân tích cú pháp, do đó giai đoạn phân tích cú pháp không thể vứt bỏ bất kỳ khoảng trắng nào mà sau này có thể phải chịu một ứng dụng như vậy. – Alohci

+0

Ngẫu nhiên, một công cụ tốt để xem các trình duyệt thực sự làm như thế nào, là sử dụng Trình xem DOM Trực tiếp của Hixie (http://software.hixie.ch/utilities/js/live-dom-viewer/). Bạn sẽ thấy rằng khi bạn tạo khoảng trắng trong hộp "đánh dấu để kiểm tra", các nút "#text:" được tạo trong DOM cho thấy không gian màu trắng không được ném ở giai đoạn phân tích cú pháp. Lưu ý rằng các trình duyệt hiện tại/gần đây không hoạt động chính xác theo cùng một cách, nhưng hiệu ứng sẽ đủ rõ ràng nếu bạn đang sử dụng trình duyệt gecko, webkit hoặc trình duyệt dựa trên presto. – Alohci

3

Vì vậy, tôi nghĩ gần nhất tôi sẽ có được một câu trả lời về vấn đề này là ở đây: http://www.w3.org/TR/CSS2/text.html#white-space-model

+0

Đây là phiên bản mới hơn và hữu ích hơn một chút: http://www.w3.org/TR/css3-text/#white-space-processing – Max

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