XML에서 한 줄에 주석을 추가하려면 어떻게해야합니까?


123

이것은 오히려 놓치지 않는 검증입니다.

XML에 줄 주석이 있습니까 / 아니요? 따라서 컴파일러가 사용하는 "//"와 같이 클로저가없는 것입니다.

나는 보았다 어떻게 XML 태그의 블록을 주석합니까? 및 기타 여러 토론.

이러한 유형의 주석은 어딘가에 가까이있는 것을 방해하지 않고 줄을 주석 처리하는 데 실용적입니다.


2
XML은 편집기와 같은 도구가 종종 자동 줄 바꿈을 수행하므로 줄 끝이 깨지기 쉽다는 가정하에 설계되었습니다. 주석의 경우에만 줄 끝을 보존해야한다면 좋지 않을 것입니다.
Michael Kay

2
편집자는 줄 바꿈 만 표시 합니다. 파일 자체에 임의로 추가되는 하드 개행 문자를 본 적이 없습니다. 줄 주석이없는 것은 지독한 골칫거리입니다.
John White

답변:


147

아니요, XML에서 한 줄에 주석을 달고 줄 바꿈시 자동으로 주석이 끝나도록 할 수있는 방법이 없습니다.

XML에는 주석에 대한 정의 가 하나만 있습니다 .

'<!--' ((Char - '-') | ('-' (Char - '-')))* '-->'

XML은 SGML과의 호환성-- 을 유지하기 위해 주석에서 금지 합니다.


해결 방법은 줄 주석 ( //) 을 사용 하고 스크립트를 실행하여 사용하기 전에 주석을 제거하는 것입니다 (단일 단계 빌드 프로세스의 일부일 수 있음). 주석을 사용하는 훨씬 더 편리한 방법이됩니다. (나는이 기술을 WiX 소스 (Windows 용 설치 도구) 와 함께 사용했습니다 . 설치 프로그램을 빌드하는 데 여러 다른 단계가 필요했기 때문에 빌드 스크립트 / 프로세스에 추가하는 단계가 한 단계 더있었습니다.)
Peter Mortensen

20

다른 사람이 말했듯이, 한 줄의 코멘트를 할 수있는 방법이 없습니다 법적으로 여러 줄 밖으로 댓글이 있다는 XML에는 하지만 , 쉽게 XML의 부분을 주석 만들 수있는 방법이 있습니다.

아래 예제를 보면 첫 번째 줄에 '>'를 추가하면 XmlTag의 주석이 제거됩니다. '>'를 제거하면 다시 주석 처리됩니다. 이것은 내가 본 가장 간단한 방법으로 내용을 깨지 않고 XML에 빠르게 주석을 달거나 주석을 제거하는 방법입니다.

<!-- --
<XmlTag variable="0" />
<!-- -->

추가 이점은 상단 댓글 만 조작하고 하단 댓글은 영원히 거기에있을 수 있다는 것입니다. 이로 인해 SGML 과의 호환성 이 깨지고 일부 XML 파서가 이에 대해 방해합니다. 이것이 당신의 XML에 영구적 인 고정물이 아니고 파서가 그것을 받아들이는 한, 그것은 실제로 문제가되지 않습니다.

Stack Overflow와 Notepad ++의 구문 하이 라이터는 여러 줄 주석처럼 처리하고 C ++의 Boost 라이브러리는 여러 줄 주석으로 처리하며 지금까지 내가 찾은 유일한 구문 분석기는 .NET, 특히 C #입니다. 따라서 사용하기 전에 먼저 도구, IDE, 라이브러리, 언어 등이이를 수락하는지 테스트해야합니다.

SGML 호환성에 관심이 있다면 다음을 대신 사용하십시오.

<!-- -
<XmlTag variable="0" />
<!- -->

상단 댓글에 '->'를 추가하고 하단 댓글에 '-'를 추가합니다. 단점은 매번 하단 댓글을 수정해야하므로 매번 <!--상단과 -->하단에 입력하는 것이 더 쉬울 것입니다 .

또한 다른 주석가들이 XML 블록을 마우스 오른쪽 버튼으로 클릭하고 주석을 달거나 주석 해제 할 수있는 XML 편집기를 사용하는 것이 좋습니다. 이것은 아마도 멋진 찾기 / 바꾸기 트릭보다 더 좋을 것입니다. 하지만 그런 도구를 사용한 적이 없습니다. 시간이 지나도 정보가 손실되지 않도록하고 싶습니다.) 저는 개인적으로 Notepad ++보다 더 좋아하는 편집기를 가지고 있다는 것을 정당화 할만큼 XML을 다룰 필요가 없었습니다. 그래서 이것은 전적으로 당신에게 달려 있습니다.


3
불행히도 이것은 잘못된 것입니다. 사양에 따르면 호환성을 위해 "-"(이중 하이픈) 문자열은 주석 내에 있으면 안됩니다.
kojiro

2
물론 그것은 합법적이지 않습니다. 사양은 명확합니다. XML 파서는 Postel의 법칙을 따를 수 있고 여러분이 그것을 피할 수 있도록 허용 할 수 있지만, 호환되는 올바른 형식 검사기가이를 표시합니다.
kojiro

4
@kojiro가 말했듯이 "-"를 포함하는 주석은 올바른 형식의 XML이 아닙니다. "호환성을 위해"에 대한 문구는이 끔찍한 규칙을 포함시킨 이유를 설명하는 사양 편집자 일뿐입니다. 호환성에 관심이 없다면 규칙을 무시할 수 있다는 의미는 아닙니다. 답이 틀 렸기 때문에 반대표를 던집니다.
Michael Kay

10
<!-- ->비 XML 대신 대시를 추가하는 문제로 작성할 수 있습니다.
kojiro 2013-06-27

3
@RyanWH는 당신을 위해 일하는 것을 계속하지만 당신은 당신이 사용하는 XML 파서의 버그에 의존하는 것 같습니다. 개인적으로 저는 XML 텍스트를 선택하고 마우스 오른쪽 버튼을 클릭하여 주석 처리를 요청할 수있는 IDE (oXygen)를 사용합니다. 당신의 기술보다 훨씬 쉬운 것 같습니다.
Michael Kay

12

HTML 또는 JavaScript 블록 주석과 동일합니다.

<!-- The to-be-commented XML block goes here. -->

5

정통은 아니지만 가끔 저에게 효과가 있습니다. 주석을 다른 속성으로 설정하십시오.

<node usefulAttr="foo" comment="Your comment here..."/>

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