Làm cách nào để tôi có thể nhận xét một dòng trong XML?


123

Đây đúng hơn là một xác minh chỉ để không bỏ lỡ.

Có / không có nhận xét dòng trong XML? Vì vậy, một cái không có gần hơn, như "//" mà trình biên dịch sử dụng.

Tôi thấy Làm cách nào để nhận xét một khối thẻ trong XML? và một số cuộc thảo luận khác.

Loại bình luận này sẽ thực tế nếu bình luận ra một dòng mà không bận tâm đến nó ở đâu đó gần hơn.


2
XML được thiết kế dựa trên giả định rằng các công cụ như trình soạn thảo thường sẽ thực hiện việc gói từ và phần cuối dòng do đó rất mỏng manh. Sẽ là một ý tưởng tồi nếu phần cuối của dòng phải được giữ nguyên chỉ trong trường hợp nhận xét.
Michael Kay

2
Chắc chắn các biên tập viên chỉ quấn dòng để hiển thị . Tôi chưa bao giờ biết các dòng mới khó được thêm tùy ý vào chính tệp. Đó là một sự phiền toái vô sinh khi không có một dòng bình luận.
John White

Câu trả lời:


147

Không, không có cách nào để nhận xét một dòng trong XML và tự động kết thúc nhận xét trên dấu ngắt dòng.

XML chỉ có một định nghĩa cho một nhận xét :

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

XML cấm --nhận xét để duy trì khả năng tương thích với SGML .


Một cách giải quyết là sử dụng dòng chú thích ( //) và chạy tập lệnh để loại bỏ những chú thích đó trước khi sử dụng (có thể là một phần của quy trình xây dựng từng bước). Nó làm cho một cách thuận tiện hơn nhiều để sử dụng nhận xét. (Tôi đã sử dụng kỹ thuật này với nguồn WiX (công cụ trình cài đặt cho Windows). Một số bước khác được yêu cầu để xây dựng trình cài đặt, vì vậy đây chỉ là một bước nữa để thêm vào một tập lệnh / quy trình xây dựng.)
Peter Mortensen

20

Như những người khác đã nói, không có cách nào để thực hiện một bình luận dòng đơn một cách hợp pháp trong XML mà bình luận nhiều dòng, nhưng có nhiều cách để làm cho việc bình luận các phân đoạn của XML trở nên dễ dàng hơn.

Nhìn vào ví dụ bên dưới, nếu bạn thêm '>' vào dòng một, XmlTag sẽ không được chú thích. Xóa '>' và nó được bình luận lại. Đây là cách đơn giản nhất mà tôi đã thấy để nhanh chóng nhận xét / bỏ ghi chú XML mà không làm hỏng mọi thứ.

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

Lợi ích bổ sung là bạn chỉ thao tác với bình luận trên cùng, và bình luận dưới cùng có thể ngồi đó mãi mãi. Điều này phá vỡ khả năng tương thích với SGML và một số trình phân tích cú pháp XML sẽ cản trở nó. Miễn là đây không phải là một cố định vĩnh viễn trong XML của bạn và các trình phân tích cú pháp của bạn chấp nhận nó, thì đó không thực sự là một vấn đề.

Trình đánh dấu cú pháp của Stack Overflow và Notepad ++ coi nó như một nhận xét nhiều dòng, thư viện Boost của C ++ coi nó như một nhận xét nhiều dòng và trình phân tích cú pháp duy nhất mà tôi đã tìm thấy cho đến nay là ngắt trong .NET, cụ thể là C #. Vì vậy, trước tiên hãy đảm bảo kiểm tra xem các công cụ, IDE, thư viện, ngôn ngữ, v.v. của bạn có chấp nhận nó hay không trước khi sử dụng.

Nếu bạn quan tâm đến khả năng tương thích của SGML, chỉ cần sử dụng điều này thay thế:

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

Thêm '->' vào nhận xét trên cùng và '-' vào nhận xét dưới cùng. Nhược điểm là phải chỉnh sửa nhận xét dưới cùng mỗi lần, điều này có thể khiến bạn chỉ cần nhập ở <!--đầu và -->cuối mỗi lần dễ dàng hơn .

Tôi cũng muốn đề cập rằng những người bình luận khác khuyên bạn nên sử dụng một trình soạn thảo XML cho phép bạn nhấp chuột phải và nhận xét / bỏ ghi chú các khối XML, có lẽ thích hợp hơn các thủ thuật tìm / thay thế ưa thích (tự nó cũng sẽ tạo ra một câu trả lời tốt, nhưng tôi chưa bao giờ sử dụng các công cụ như vậy. Tôi chỉ muốn đảm bảo thông tin không bị mất theo thời gian). Cá nhân tôi chưa bao giờ phải xử lý XML đủ để biện minh cho việc có một trình soạn thảo sành điệu hơn Notepad ++, vì vậy điều này hoàn toàn tùy thuộc vào bạn.


3
Thật không may, điều này là sai. Thông số cho biết, Để tương thích, chuỗi "-" (dấu gạch ngang kép) KHÔNG ĐƯỢC xuất hiện trong các nhận xét.
kojiro

2
Tất nhiên nó không hợp pháp. Các thông số rõ ràng về điều đó. Trình phân tích cú pháp XML có thể tuân theo Luật Postel và cho phép bạn xử lý nó, nhưng một trình kiểm tra tính hợp lệ tuân thủ sẽ gắn cờ nó.
kojiro

4
Như @kojiro nói, nhận xét có chứa "-" không phải là XML được định dạng tốt. Cụm từ về "Tính tương thích" chỉ đơn thuần là các biên tập viên thông số nêu lý do của họ để đưa vào quy tắc kinh khủng này: nó không có nghĩa là bạn có thể bỏ qua quy tắc nếu bạn không quan tâm đến tính tương thích. Từ chối câu trả lời vì nó là sai.
Michael Kay

10
Bạn có thể viết nó <!-- ->và có vấn đề là thêm một dấu gạch ngang thay vì có không phải XML.
kojiro

3
@RyanWH tiếp tục làm những gì phù hợp với bạn, nhưng dường như bạn đang phụ thuộc vào một lỗi trong trình phân tích cú pháp XML mà bạn đang sử dụng. Cá nhân tôi sử dụng một IDE (oXygen) cho phép tôi chọn một đoạn văn bản XML, nhấp chuột phải và yêu cầu bình luận về nó. Điều này có vẻ dễ dàng hơn nhiều so với kỹ thuật của bạn.
Michael Kay

12

Nó giống như các nhận xét của khối HTML hoặc JavaScript:

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

5

Không phải là chính thống, nhưng nó hiệu quả với tôi đôi khi; đặt nhận xét của bạn làm thuộc tính khác:

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

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.