Phần CDATA là " một phần nội dung phần tử được đánh dấu để trình phân tích cú pháp diễn giải dưới dạng dữ liệu ký tự, không phải đánh dấu. "
Cú pháp, nó hoạt động tương tự như một nhận xét:
<exampleOfAComment>
<!--
Since this is a comment
I can use all sorts of reserved characters
like > < " and &
or write things like
<foo></bar>
but my document is still well-formed!
-->
</exampleOfAComment>
... nhưng nó vẫn là một phần của tài liệu:
<exampleOfACDATA>
<![CDATA[
Since this is a CDATA section
I can use all sorts of reserved characters
like > < " and &
or write things like
<foo></bar>
but my document is still well formed!
]]>
</exampleOfACDATA>
Hãy thử lưu các .xhtml
tệp sau dưới dạng tệp ( không phải .html
) và mở tệp bằng FireFox ( không phải Internet Explorer ) để xem sự khác biệt giữa phần bình luận và phần CDATA; bình luận sẽ không xuất hiện khi bạn xem tài liệu trên trình duyệt, trong khi phần CDATA sẽ:
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" >
<head>
<title>CDATA Example</title>
</head>
<body>
<h2>Using a Comment</h2>
<div id="commentExample">
<!--
You won't see this in the document
and can use reserved characters like
< > & "
-->
</div>
<h2>Using a CDATA Section</h2>
<div id="cdataExample">
<![CDATA[
You will see this in the document
and can use reserved characters like
< > & "
]]>
</div>
</body>
</html>
Một điều cần lưu ý với các phần CDATA là chúng không có mã hóa, vì vậy không có cách nào để đưa chuỗi ]]>
vào chúng. Bất kỳ dữ liệu ký tự nào chứa ]]>
sẽ phải - theo như tôi biết - thay vào đó là một nút văn bản. Tương tự, từ góc độ thao tác DOM, bạn không thể tạo phần CDATA bao gồm ]]>
:
var myEl = xmlDoc.getElementById("cdata-wrapper");
myEl.appendChild(xmlDoc.createCDATASection("This section cannot contain ]]>"));
Mã thao tác DOM này sẽ đưa ra một ngoại lệ (trong Firefox) hoặc dẫn đến một tài liệu XML có cấu trúc kém: http://jsfiddle.net/9NNHA/