Что значит <! [CDATA []] > в XML значит?

$a[0] = 'John Doe';       
$a[1] = 'Jason statham';       
$a[2] = 'Thomas Anderson';
$size = count($a);
foreach($a as $key=>$name){
    $result .= $name;
    if($size > $key+1) $result .=', ';
}
echo $result;
930
задан jpaugh 28 August 2017 в 00:43
поделиться

5 ответов

CDATA означает символьные данные , и это означает, что данные между этими строками включают данные, которые могут интерпретироваться как разметка XML, но не должны быть таковыми.

Ключевые различия между CDATA и комментариями заключаются в следующем:

Это означает, что, учитывая эти три фрагмента XML из одного правильно сформированного документа:

<!ENTITY MyParamEntity "Has been expanded">

<!--
Within this comment I can use ]]>
and other reserved characters like <
&, ', and ", but %MyParamEntity; will not be expanded
(if I retrieve the text of this node it will contain
%MyParamEntity; and not "Has been expanded")
and I can't place two dashes next to each other.
-->

<![CDATA[
Within this Character Data block I can
use double dashes as much as I want (along with <, &, ', and ")
*and* %MyParamEntity; will be expanded to the text
"Has been expanded" ... however, I can't use
the CEND sequence. If I need to use CEND I must escape one of the
brackets or the greater-than sign using concatenated CDATA sections.
]]>

<description>An example of escaped CENDs</description>
<!-- This text contains a CEND ]]> -->
<!-- In this first case we put the ]] at the end of the first CDATA block
     and the > in the second CDATA block -->
<data><![CDATA[This text contains a CEND ]]]]><![CDATA[>]]></data>
<!-- In this second case we put a ] at the end of the first CDATA block
     and the ]> in the second CDATA block -->
<alternative><![CDATA[This text contains a CEND ]]]><![CDATA[]>]]></alternative>
918
ответ дан 19 December 2019 в 20:20
поделиться

Обычно используется для вставки пользовательских данных, таких как изображения или звуковые данные в XML-документ.

1
ответ дан 19 December 2019 в 20:20
поделиться

Раздел CDATA - это « раздел содержимого элемента, который помечен синтаксическим анализатором для интерпретации только как символьные данные, а не как разметка. »

Синтаксически он ведет себя аналогично комментарию:

<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>

... но он все еще является частью документа:

<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>

Попробуйте сохранить следующее как файл .xhtml ( не .html ) и откройте его с помощью FireFox. ( не Internet Explorer ), чтобы увидеть разницу между комментарием и разделом CDATA; комментарий не появится, когда вы посмотрите документ в браузере, в то время как в разделе CDATA будет:

<?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>

В разделах CDATA следует обратить внимание на то, что они не имеют кодировки, поэтому нет возможности включить строку ]]> в них. Любые символьные данные, содержащие ]]> , должны - насколько мне известно - быть текстовым узлом. Аналогичным образом, с точки зрения манипулирования DOM вы не можете создать раздел CDATA, который включает ]]> :

var myEl = xmlDoc.getElementById("cdata-wrapper");
myEl.appendChild(xmlDoc.createCDATASection("This section cannot contain ]]>"));

Этот код манипулирования DOM либо вызовет исключение (в Firefox), либо приведет к плохо структурированному XML документ: http://jsfiddle.net/9NNHA/

331
ответ дан 19 December 2019 в 20:20
поделиться

Содержащиеся в нем данные не будут анализироваться как XML, и как таковые не обязательно должны быть действительным XML или могут содержать элементы, которые могут казаться XML, но не являются таковыми.

30
ответ дан 19 December 2019 в 20:20
поделиться

Он используется для хранения данных, которые в противном случае можно было бы рассматривать как xml, поскольку они содержат определенные символы.

Таким образом, данные внутри будут отображаться, но не интерпретироваться.

5
ответ дан 19 December 2019 в 20:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: