programing

무엇인가.무엇인가.XML로?XML로?

codeshow 2023. 9. 14. 23:45
반응형

무엇인가.XML로?

나는 종종 이것을 이상하게 생각합니다.CDATA꼬리를 물고 늘어놓다XML파일:

<![CDATA[some stuff]]>

나는 이것을 관찰했습니다.CDATA태그는 항상 처음에 오고, 그 다음에 어떤 것들이 뒤따릅니다.

하지만 때로는 사용되고, 그렇지 않을 때도 있습니다.나는 그것이 그것을 표시하기 위한 것이라고 추측합니다.some stuff는 그 이후에 삽입될 "데이터"입니다.하지만 어떤 종류의 데이터가some stuff? 제가 XML 태그에 쓰는 것은 일종의 데이터가 아닌가요?

CDATA stands for Character Data and it means that the data in between these strings includes data that could be interpreted as XML markup, but should not be.

The key differences between CDATA and comments are:

This means given these four snippets of XML from one well-formed document:

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

A CDATA section is "a section of element content that is marked for the parser to interpret as only character data, not markup."

Syntactically, it behaves similarly to a comment:

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

... but it is still part of the document:

<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설명과 CDATA 섹션의 차이점을 보려면 FireFox(Internet Explorer가 아님)를 사용하여 엽니다. 브라우저에서 문서를 보면 설명이 표시되지 않는 반면 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 ]]>"));

This DOM manipulation code will either throw an exception (in Firefox) or result in a poorly structured XML document: http://jsfiddle.net/9NNHA/

One big use-case: your xml includes a program, as data (e.g. a web-page tutorial for Java). In that situation your data includes a big chunk of characters that include '&' and '<' but those characters aren't meant to be xml.

비교:

<example-code>
while (x &lt; len &amp;&amp; !done) {
    print( &quot;Still working, &apos;zzz&apos;.&quot; );
    ++x;
    }
</example-code>

와 함께

<example-code><![CDATA[
while (x < len && !done) {
    print( "Still working, 'zzzz'." );
    ++x;
    }
]]></example-code>

특히 이 코드를 파일에서 복사/붙여넣는 경우(또는 사전 프로세서에 포함된 경우), XML 태그/속성과 혼동하지 않고 원하는 문자를 XML 파일에 저장하는 것이 좋습니다.@paary가 언급한 것처럼, 다른 일반적인 용도로는 앰퍼샌드를 포함하는 URL을 내장하는 경우가 있습니다.마지막으로, 데이터에 몇 개의 특수 문자만 포함되어 있지만 데이터가 매우 길다고 해도(예를 들어 챕터의 텍스트) xml 파일을 편집할 때 해당 몇 개의 엔티티를 인코딩/디코딩할 필요가 없습니다.

(댓글에 대한 모든 비교가 오해를 불러일으키거나 도움이 되지 않는다고 생각합니다.)

xml 요소가 HTML 코드를 저장해야 할 때 CDATA를 사용해야 했던 적이 있습니다.뭐 이런 거.

<codearea>
  <![CDATA[ 
  <div> <p> my para </p> </div> 
  ]]>
</codearea>

따라서 CDATA는 < 및 > 등과 같은 XML 태그로 해석될 수 있는 문자를 무시한다는 것을 의미합니다.

여기에 포함된 데이터는 XML로 구문 분석되지 않으므로 유효한 XML일 필요가 없거나 XML로 보일 수 있지만 그렇지 않은 요소를 포함할 수 있습니다.

또 다른 사용 예로는 다음과 같습니다.

RSS 피드(xml 문서)가 있고 설명 표시에 기본 HTML 인코딩을 포함하려면 CData를 사용하여 인코딩할 수 있습니다.

<item>
  <title>Title of Feed Item</title>
  <link>/mylink/article1</link>
  <description>
    <![CDATA[
      <p>
      <a href="/mylink/article1"><img style="float: left; margin-right: 5px;" height="80" src="/mylink/image" alt=""/></a>
      Author Names
      <br/><em>Date</em>
      <br/>Paragraph of text describing the article to be displayed</p>
    ]]>
  </description>
</item>

RSS Reader는 설명을 끌어와 CDATA 내에서 HTML을 렌더링합니다.

참고 - 모든 HTML 태그가 작동하는 것은 아닙니다 - 사용하는 RSS 리더에 따라 다를 것 같습니다.


그리고 이 예제에서 CData(그리고 적절한 pubData 및 dc:creator 태그가 아닌)를 사용하는 이유에 대한 설명으로서, 이것은 실제 포맷 제어가 없는 RSS 위젯을 사용한 웹사이트 디스플레이를 위한 것입니다.

이를 통해 새로운 위젯을 사용할 필요 없이 포함된 이미지의 높이와 위치를 지정하고 작성자 이름과 날짜를 정확하게 지정할 수 있습니다.이것은 또한 손으로 추가할 필요 없이 이것을 스크립트로 작성할 수 있다는 것을 의미합니다.

위키피디아에서:

[] XML 문서 또는 외부 파싱된 엔티티에서, CDATA 섹션은 파서가 마크업이 아닌 문자 데이터로만 해석할 수 있도록 표시된 요소 컨텐츠의 섹션입니다.

http://en.wikipedia.org/wiki/CDATA

따라서 CDATA 내부의 텍스트는 구문 분석기에서 볼 수 있지만 XML 노드가 아닌 문자로만 볼 수 있습니다.

이것은 평소처럼 XML로 전달할 수 없는 문자열을 피합니다.

예:

문자열에는 "&"이 들어 있습니다.

할 수 없음:

<FL val="Company Name">Dolce & Gabbana</FL>

따라서 CDA를 사용해야 합니다.TA:

<FL val="Company Name"> <![CDATA["Dolce & Gabbana"]]> </FL>

CDATA는 캐릭터 데이터(Character Data)의 약자입니다.이것을 사용하여 일반 XML로 처리되는 일부 문자를 피할 수 있습니다. 이 내부의 데이터는 구문 분석되지 않습니다.를 들어,을하는 URL는우을sr는a는tul를flsot,e어을을&그 안에서 CDATA를 사용해서 할 수 있습니다.않으면 XML로 합니다.

특정 문자를 포함하기 때문에 xml로 표시될 수 있는 데이터를 포함하는 데 사용됩니다.

이렇게 하면 내부의 데이터가 표시되지만 해석되지 않습니다.

Cdata는 xml 파서에 전달할 수 있지만 xml로 해석할 수 없는 데이터입니다.

예를 들어 :- 질문/응답 개체를 캡슐화한 xml이 있습니다.이러한 열린 필드는 기본 데이터 유형 또는 xml 정의된 사용자 정의 데이터 유형에 엄격하게 해당되지 않는 모든 데이터를 가질 수 있습니다.예를 들어 --이것이 xml 주석에 대한 올바른 태그입니까? .-- xml 파서에서 다른 하위 요소로 해석하지 않고 그대로 전달해야 하는 요구 사항이 있을 수 있습니다.여기 Cdata가 당신을 구합니다. 당신이 Cdata로 선언함으로써 파서에게 xml로 포장된 데이터를 취급하지 말라고 말합니다(비록 하나처럼 보일 수 있지만).

에 하세요.CDATAXML 텍스트 파일에 텍스트를 직접 배치하는 경우에만 construct가 필요합니다.

, 만 만 하면 됩니다.CDATA손으로 타이핑하거나 프로그래밍 방식으로 XML 텍스트를 직접 작성하는 경우.

DOM 프로세서 API 또는 SimpleX를 사용하여 입력한 텍스트XML 내용 규칙의 실행 오류를 방지하기 위해 ML이 자동으로 이스케이프됩니다.

그럼에도 불구하고, 사용할 때가 있을 수 있습니다.CDATA의 CSS면와된든와께될트를일수다이를트일n수neds될es,rs지etlhetdes면h께의d와와 style태그 또는 자바스크립트 인script합니다, 예를 들어 tags,은 HTML|XML의 문자들을 사용합니다,를어다을이어의,어를s,,다te을y이,<그리고.>.

일반적으로 XML 문서 내에 사진이나 사운드 데이터와 같은 사용자 지정 데이터를 포함하는 데 사용됩니다.

언급URL : https://stackoverflow.com/questions/2784183/what-does-cdata-in-xml-mean

반응형