Như chúng ta thấy việc đặt nội dung dữ liệu trong tài liệu XML bao hàm cả
ký tựđặc biệt như > hay & là quá khó khăn. Chúng ta phải sử dụng các tham chiếu thay thế. Nếu muốn lưu toàn bộ dữ liệu từ một tài liệu XML khác vào tài liệu XML của mình thì sao? Nếu ta đặt nội dung dữ liệu XML ngoại vào tài liệu đích của mình thì tài liệu đích sẽ bị xáo trộn bởi các thẻ nhập vào tài liệu ngoại để khắc phục điều đó ta làm như thế nào? Chúng ta sử dụng phần tử CDATA để yêu cầu trình phân tích xem toàn bộ nội dung của tài liệu ngoại như là dữ liệu chứ không phải là cấu trúc bao gồm các thẻ.
Phân đoạn CDATA cũng là một phần tử nhưng bao gồm chỉ một thẻ. Thẻ
này bắt đầu bằng [!CDATA[ và kết thúc bằng ]]>. Giữa dấu hiệu bắt đầu [!CDATA[ và kết thúc ]]> là nội dung văn bản bạn muốn trình phân tích không
đụng đến. Ví dụ:
<?xmlversion="1.0"encoding="utf-8" ?>
<?xml-stylesheettype="text/xsl" href="hello.xslt"?> <Document>
[<![CDATA[
<Greeting> Hello XML</Greeting> <Message>Welcome to XML</Message> ]]>
</Document>
Phân đoạn CDATA cực kỳ hữu dụng. Tất cả dữ liệu của ta sẽđược lưu trọn vẹn mà không sợ xung đột với các thẻ hay ký tựđặc biệt của XML. Tuy nhiên, cần phải tránh dùng ký tự nhận dạng nơi kết dữ liệu ]]> bên trong phân đoạn CDATA. Ví dụ sau được xem là không hợp lệ:
<?xmlversion="1.0"encoding="utf-8" ?>
<?xml-stylesheettype="text/xsl" href="hello.xslt"?> <Document>
[<![CDATA[
<Greeting> Hello XML</Greeting>]]> <Message>Welcome to XML</Message> ]]>
</Document>
Chúng ta xem xét một ví dụ về cách đưa javascript vào phân đoạn CDATA: <?xmlversion="1.0"encoding="utf-8" ?>
<?xml-stylesheettype="text/xsl" href="hello.xslt"?> <Document>
<Greeting>Hello XML</Greeting>
<Message>Welcome to XML </Message> <scriptlanguage="javasript">
<![CDATA[ var a; a=5; if(a<0) document.writeln("xin chào bạn") else document.writeln("số 5 lớn hơn 0")
]]> <center>
<h1>Welcome java script</h1> </center>
</script> </Document>