2011-06-28 16 views
17

Tôi cần có thể tham chiếu các thực thể HTML được đặt tên như • thay vì thay thế Unicode • trong tài liệu XML. Tôi có quyền kiểm soát một số phần của tài liệu XML, chẳng hạn như xác định DOCTYPE, nhưng thực hiện tìm và thay thế trong XML thực tế không phải là một tùy chọn. Tôi có thể nhận được một số yếu tố như  & bằng cách bao gồm DOCTYPE chuyển tiếp XHTML, nhưng tôi cần xác định thủ công hơn. Làm thế nào để tôi làm điều này?Làm cách nào để xác định các tham chiếu thực thể HTML bên trong tài liệu XML hợp lệ?

- EDIT -

Nhờ câu trả lời của Jim, đây là những gì tôi đã kết thúc. Này là rất tốt vì tôi có thể sử dụng các đối tượng chuyển tiếp XHTML, và cũng thêm của riêng tôi:

<!DOCTYPE 
    html 
    PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" 
    [ 
     <!ENTITY bull "&#8226;"> 
     <!ENTITY ldquo "&#8220;"> 
     <!ENTITY rdquo "&#8221;"> 
     ... etc ... 
    ] 
> 
+2

Nếu bạn sử dụng nhiều kê khai thực thể, hãy cân nhắc đặt chúng vào một tệp riêng biệt và sau đó sử dụng thực thể tham số để tham chiếu chúng. –

Trả lời

13

Nếu bạn có thể thay đổi các XML để bao gồm một DTD inline bạn có thể xác định các đối tượng đó:

<!DOCTYPE yourRootElement [ 
    <!ENTITY bull "&#8226;"> 
    .... 
]> 
+0

Tuyệt vời, cảm ơn bạn! – mattmc3

+0

Đây là phép thuật! Nó có thể được sử dụng để xây dựng các tệp kê khai android, giúp dễ dàng tạo mẫu mà không gây ra bất kỳ sai sót nào về tên gói hoặc loại tương tự ... – Tonithy

3

tôi không cetain, nhưng tôi nghĩ rằng XHTML DTD của nên cung cấp cho bạn khá một vài đơn vị (253):

http://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references#Entities_representing_special_characters_in_XHTML

Cũng trong spec w3, có một đề cập đến của DTD bổ sung cho các ký tự đặc biệt, v.v. http://www.w3.org/TR/xhtml-modularization/dtd_module_defs.html#a_dtd_xhtml_character_entities

Tuy nhiên tôi chưa thể tìm thấy ví dụ triển khai các DTD ký tự đặc biệt.


Sửa bởi DevNull

Dưới đây là một ví dụ thực hiện rất chung chung của một trong những tổ chức DTD mô-đun. Để thực hiện, bạn chỉ cần thêm một thực thể tham số trỏ vào module.

<?xml version="1.0"?> 
<!DOCTYPE test [ 
<!ELEMENT test (#PCDATA)> 
<!ENTITY % xhtml-special SYSTEM "xhtml-special.ent"> 
%xhtml-special; 
]> 
<test>Here is a left double quote: &ldquo;</test> 
+0

Tôi đã thêm một ví dụ về triển khai. Tôi hy vọng bạn không nhớ. Nếu đây không phải là ý của bạn, vui lòng xóa bản chỉnh sửa của tôi. –

+0

Tuyệt vời, đẹp nhất @DevNull không biết bạn có thể làm điều đó. Vậy "test (#PCDATA)" có nói với trình phân tích cú pháp rằng "test" là một dữ liệu ký tự được phân tích cú pháp không? –

+0

Điều đó có nghĩa là phần tử 'test' có thể chứa" dữ liệu ký tự phân tích cú pháp "(văn bản thuần túy). –

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