의미-<? xml version =“1.0”encoding =“utf-8”?>


103

저는 XML을 처음 접했고 기본 사항을 이해하려고 노력하고 있습니다. "Learning XML"에서 아래 줄을 읽었지만 여전히 명확하지 않습니다. 누군가가 이러한 기본 사항을 명확하게 설명하는 책이나 웹 사이트를 알려줄 수 있습니까?

에서 학습 XML :

XML 선언은 문서의 가장 일반적인 속성 중 일부를 설명하여이 문서를 해석하기 위해 XML 파서가 필요함을 XML 프로세서에 알립니다.

이것은 무엇을 의미 하는가?

나는 xml version부분을 이해한다 -doc의 사용자와 doc는 동일한 버전의 XML에서 "대화"해야한다. 하지만 그 encoding부분은 어떻습니까? 왜 필요한가요?



답변:


126

"인코딩"속성을 이해하려면 바이트문자 의 차이를 이해해야합니다 .

바이트를 0에서 255 사이의 숫자로 생각하고 문자는 "a", "1"및 "Ä"와 같은 것입니다. 사용 가능한 모든 문자 집합을 문자 집합 이라고합니다 .

각 문자에는이를 나타내는 데 사용되는 하나 이상의 바이트 시퀀스가 ​​있습니다. 그러나 바이트의 정확한 수와 값은 사용되는 인코딩에 따라 다르며 다양한 인코딩이 있습니다.

대부분의 인코딩은 이전 문자 집합과 ASCII라는 인코딩을 기반으로하며 문자 당 단일 바이트 (실제로는 7 비트)이며 미국 영어에서 사용되는 많은 공통 문자를 포함하여 128 개의 문자를 포함합니다.

예를 들어 다음은 60에서 65 사이의 값으로 표시되는 ASCII 문자 집합의 6 개 문자입니다.

Extract of ASCII Table 60-65
╔══════╦══════════════╗
║ Byte ║  Character   ║
╠══════╬══════════════║
║  60  ║      <       ║
║  61  ║      =       ║
║  62  ║      >       ║
║  63  ║      ?       ║
║  64  ║      @       ║
║  65  ║      A       ║
╚══════╩══════════════╝

전체 ASCII 세트에서 사용되는 가장 낮은 값은 0이고 가장 높은 값은 127입니다 (둘 다 숨겨진 제어 문자 임).

그러나 기본 ASCII가 제공하는 것보다 더 많은 문자 (예 : 악센트가있는 문자, 통화 기호, 그래픽 기호 등)가 필요하기 시작하면 ASCII가 적합하지 않으며 더 광범위한 문자가 필요합니다. 더 많은 문자 (다른 문자 집합)가 필요하고 128 자만으로는 모든 문자를 맞추기에 충분하지 않으므로 다른 인코딩이 필요합니다. 일부 인코딩은 1 바이트 (256 자) 또는 최대 6 바이트를 제공합니다.

시간이 지남에 따라 많은 인코딩이 만들어졌습니다. Windows 세계에는 CP1252 또는 ISO-8859-1이 있지만 Linux 사용자는 UTF-8을 선호하는 경향이 있습니다. Java는 기본적으로 UTF-16을 사용합니다.

한 인코딩의 문자에 대한 한 바이트 값 시퀀스는 다른 인코딩에서 완전히 다른 문자를 나타내거나 유효하지 않을 수도 있습니다.

예를 들어 ISO 8859-1 에서 â 는 value의 1 바이트로 표시되는 226반면 UTF-8 에서는 2 바이트 195, 162입니다. 그러나,에서 ISO 8859-1 , 195, 162두 문자가 될 것 ¢, Ã을 .

XML을 일련의 문자가 아니라 일련의 바이트로 생각하십시오.

XML을 수신하는 시스템이 바이트를 본다고 상상해보십시오 195, 162. 이것이 어떤 캐릭터인지 어떻게 알 수 있습니까?

시스템이 이러한 바이트를 실제 문자로 해석하여 표시하거나 다른 인코딩으로 변환하려면 XML에서 사용되는 인코딩을 알아야합니다.

대부분의 일반적인 인코딩은 ASCII와 호환되기 때문에 기본 알파벳 문자와 기호가 사용되는 한 이러한 경우 인코딩 자체를 나타내는 데 ASCII 문자 만 사용하면 선언 자체가 사라질 수 있습니다. 다른 경우에는 파서가 선언의 인코딩을 파악해야합니다. 선언이 시작되는 것을 알고 있기 때문에 이것을 <?xml하는 것이 훨씬 쉽습니다.

마지막으로 version속성은 XML 버전을 지정합니다. 현재 두 가지 버전이 있습니다 ( Wikipedia XML 버전 참조 . 버전간에 약간의 차이가 있으므로 XML 파서가 처리 내용을 알아야합니다. 대부분의 경우 (영어의 경우) 어쨌든 스피커) 버전 1.0이면 충분합니다.


9
"헤더 자체는 ASCII 인코딩을 사용합니다.": XML 선언을 참조하고 있다고 생각합니다. 문서의 나머지 부분처럼 인코딩됩니다. UTF-16 또는 기타. XML 프로세서는 인코딩 사양을 읽을 수있을 때까지 몇 가지 시도를 할 수 있습니다.
Tom Blodget 2014

1
나는 프리앰블 / 프롤로그가 UTF-8로 인코딩되고 나머지 바이트 (실제 XML 문서)를 올바른 인코딩으로 변환하는 방법을 파서에 알려주는 인상을 받았습니다. 또 틀렸어! :-)
Kelly Beard

5
다음은 권장되는 읽기입니다. joelonsoftware.com/2003/10/08/…
Sudip Bhandari

26

모든 XML 문서에서 XML 선언이 필요하지는 않습니다. 그러나 XHTML 문서 작성자는 모든 문서에서 XML 선언을 사용하는 것이 좋습니다. 문서의 문자 인코딩이 기본 UTF-8 또는 UTF-16이 아니고 상위 수준 프로토콜에서 인코딩이 결정되지 않은 경우 이러한 선언이 필요합니다. 다음은 XHTML 문서의 예입니다. 이 예에서는 XML 선언이 포함됩니다.

<?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE html 
 PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  <head>
    <title>Virtual Library</title>
  </head>
  <body>
    <p>Moved to <a href="http://example.org/">example.org</a>.</p>
 </body>
</html>

XML 에 대한 W3 표준을 참조하십시오 .


4
xml은 xhtml에 연결됩니다. xml w3.org/TR/xml 에 링크하려고 했습니까? 아니면 링크 이름을 xhtml로 지정 했습니까?
jrwren 2013-06-12

xhtml은 xml 문서를 참조합니다. 올바른 형식의 xml에는 문서 유형 선언이 필요하지 않습니다.
xvan 2016

"XML에 대한 W3 표준을 참조하십시오." IOW, 길고 긴 문서 인 faqing faq을 읽어보십시오. 사람들이 단순히 "?"를 설명 할 수없는 이유는 무엇입니까? 왜 거기에 ???
Blessed Geek

3

이것은 XML 선택적 프리앰블입니다.

  • version="1.0" 이것은이 파일이 준수하는 XML 표준임을 의미합니다.
  • encoding="utf-8" 파일이 UTF-8 유니 코드 인코딩을 사용하여 인코딩되었음을 의미합니다.


2

누군가가 이러한 기본 사항을 명확하게 설명하는 책이나 웹 사이트를 알려줄 수 있습니까?

XML 자습서 를 예제와 함께 확인할 수 있습니다 .

그러나 인코딩 부분은 어떻습니까? 왜 필요한가요?

W3C는 인코딩에 대한 설명을 제공합니다 .

"XML 및 HTML 4.0 용 문서 문자 집합은 유니 코드 (일명 ISO 10646)입니다. 이는 HTML 브라우저와 XML 프로세서가 내부적으로 유니 코드를 사용하는 것처럼 동작해야한다는 것을 의미합니다. 그러나 문서가 유니 코드로 전송되어야한다는 의미는 아닙니다. 클라이언트와 서버가 인코딩에 동의하는 한 유니 코드로 변환 할 수있는 모든 인코딩을 사용할 수 있습니다 ... "


-1

문서 맵의 XML 선언은 다음으로 구성됩니다.

The version number, ?xml version="1.0"?. 

이것은 필수입니다. 이후 버전의 XML에서는 숫자가 변경 될 수 있지만 1.0이 현재 버전입니다.

인코딩 선언,

encoding="UTF-8"?

이것은 선택 사항입니다. 사용되는 경우 인코딩 선언은 XML 선언의 버전 정보 바로 뒤에 나타나야하며 기존 문자 인코딩을 나타내는 값을 포함해야합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.