ฉันจะแสดงความคิดเห็นหนึ่งบรรทัดใน XML ได้อย่างไร


123

นี่เป็นการยืนยันที่ไม่ควรพลาด

ไม่มีบรรทัดคอมเมนต์ใน XML หรือไม่ ดังนั้นหนึ่งโดยไม่ต้องใกล้ชิดเช่น "//" คอมไพเลอร์ใช้

ฉันเห็นฉันจะแสดงความคิดเห็นเกี่ยวกับบล็อกแท็กใน XML ได้อย่างไร และการอภิปรายอื่น ๆ อีกมากมาย

ความคิดเห็นประเภทนี้สามารถใช้งานได้จริงในการแสดงความคิดเห็นโดยไม่รบกวนความคิดเห็นที่อยู่ใกล้ ๆ


2
XML ได้รับการออกแบบโดยใช้สมมติฐานว่าเครื่องมือเช่นบรรณาธิการมักจะทำการตัดคำและการลงท้ายบรรทัดนั้นจึงเปราะบาง มันจะเป็นความคิดที่ไม่ดีถ้าต้องรักษาส่วนท้ายบรรทัดไว้ในกรณีที่แสดงความคิดเห็น
Michael Kay

2
บรรณาธิการจะตัดเฉพาะบรรทัดสำหรับการแสดงผลเท่านั้น ฉันไม่เคยรู้มาก่อนว่าต้องเพิ่มบรรทัดใหม่ให้กับไฟล์โดยพลการ มันเป็นความรำคาญที่ไม่ได้มีความคิดเห็นบรรทัด
John White

คำตอบ:


147

ไม่ไม่มีวิธีแสดงความคิดเห็นในบรรทัดใน XML และให้ความคิดเห็นสิ้นสุดโดยอัตโนมัติใน linebreak

XML มีคำจำกัดความเดียวสำหรับความคิดเห็น :

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

ห้าม XML --ในความคิดเห็นในการรักษาความเข้ากันได้กับ SGML


วิธีแก้ปัญหาคือใช้ความคิดเห็นบรรทัด ( //) และเรียกใช้สคริปต์เพื่อตัดความคิดเห็นเหล่านั้นออกก่อนใช้งาน (สามารถเป็นส่วนหนึ่งของกระบวนการสร้างแบบขั้นตอนเดียว) ช่วยให้ใช้ความคิดเห็นได้สะดวกขึ้นมาก (ฉันได้ใช้เทคนิคนี้กับWiXแหล่งที่มา (เครื่องมือติดตั้งสำหรับ Windows) จำนวนขั้นตอนอื่น ๆ ที่จำเป็นสำหรับการสร้างการติดตั้งดังนั้นนี้เป็นเพียงหนึ่งในขั้นตอนที่มากขึ้นเพื่อเพิ่มการสร้างสคริปต์ / ขั้นตอน..)
ปีเตอร์มอร์เทน

20

ดังที่คนอื่น ๆ กล่าวไว้ไม่มีวิธีใดที่จะแสดงความคิดเห็นบรรทัดเดียวอย่างถูกกฎหมายใน XML ที่แสดงความคิดเห็นหลายบรรทัดแต่มีหลายวิธีที่จะทำให้การแสดงความคิดเห็นในส่วนของ XML ง่ายขึ้น

ดูตัวอย่างด้านล่างหากคุณเพิ่ม ">" ในบรรทัดที่หนึ่ง XmlTag จะไม่มีการใส่ความคิดเห็น ลบ ">" และแสดงความคิดเห็นอีกครั้ง นี่เป็นวิธีที่ง่ายที่สุดที่ฉันเคยเห็นในการแสดงความคิดเห็น / ไม่แสดงความคิดเห็น XML อย่างรวดเร็วโดยไม่ทำลายสิ่งต่างๆ

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

ประโยชน์เพิ่มเติมคือคุณจัดการกับความคิดเห็นด้านบนเท่านั้นและความคิดเห็นด้านล่างสามารถนั่งอยู่ที่นั่นได้ตลอดไป ซึ่งจะทำลายความเข้ากันได้กับSGMLและตัวแยกวิเคราะห์ XML บางตัวจะ จำกัด ไว้ ตราบเท่าที่นี่ไม่ใช่การติดตั้งถาวรใน XML ของคุณและตัวแยกวิเคราะห์ของคุณยอมรับมันก็ไม่ใช่ปัญหาจริงๆ

ปากกาเน้นข้อความไวยากรณ์ของ Stack Overflow และNotepad ++ถือว่าเหมือนกับความคิดเห็นหลายบรรทัดไลบรารีBoostของ C ++ ถือว่าเป็นความคิดเห็นแบบหลายบรรทัดและเป็นตัวแยกวิเคราะห์เดียวที่ฉันพบจนถึงตอนนี้ที่ตัวแบ่งเป็นตัวแบ่งใน. NET โดยเฉพาะ C # ดังนั้นอย่าลืมทดสอบก่อนว่าเครื่องมือ IDE ไลบรารีภาษา ฯลฯ ของคุณยอมรับก่อนใช้งาน

หากคุณสนใจเกี่ยวกับความเข้ากันได้ของ SGML เพียงใช้สิ่งนี้แทน:

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

เพิ่ม "->" ในความคิดเห็นด้านบนและ "-" ที่ความคิดเห็นด้านล่าง ข้อเสียคือต้องแก้ไขความคิดเห็นด้านล่างทุกครั้งซึ่งอาจทำให้ง่ายขึ้นเพียงแค่พิมพ์<!--ที่ด้านบนและ-->ด้านล่างในแต่ละครั้ง

ฉันต้องการพูดถึงว่าผู้แสดงความคิดเห็นคนอื่นแนะนำให้ใช้ตัวแก้ไข XML ที่ช่วยให้คุณคลิกขวาและแสดงความคิดเห็น / บล็อก XML ที่ไม่แสดงความคิดเห็นซึ่งน่าจะเป็นที่นิยมมากกว่าเทคนิคการค้นหา / แทนที่แบบแฟนซี (มันจะเป็นคำตอบที่ดีในตัวเองด้วย แต่ฉันไม่เคยใช้เครื่องมือดังกล่าวฉันแค่ต้องการให้แน่ใจว่าข้อมูลจะไม่สูญหายไปตามกาลเวลา) โดยส่วนตัวฉันไม่เคยต้องจัดการกับ XML มากพอที่จะพิสูจน์ได้ว่ามีตัวแก้ไขที่เก่งกว่า Notepad ++ ดังนั้นนี่จึงขึ้นอยู่กับคุณโดยสิ้นเชิง


3
น่าเสียดายที่นี่เป็นสิ่งที่ผิด ข้อกำหนดระบุว่าเพื่อความเข้ากันได้สตริง "-" (ยัติภังค์คู่) ต้องไม่ปรากฏในความคิดเห็น
kojiro

2
แน่นอนว่ามันไม่ถูกกฎหมาย ข้อมูลจำเพาะมีความชัดเจนในเรื่องนั้น ตัวแยกวิเคราะห์ XML อาจเป็นไปตามกฎของ Postel และช่วยให้คุณหลีกหนีจากมันได้ แต่ตัวตรวจสอบความสมบูรณ์ที่สอดคล้องกันจะตั้งค่าสถานะไว้
kojiro

4
ดังที่ @kojiro กล่าวความคิดเห็นที่มี "-" ไม่ใช่ XML ที่มีรูปแบบที่ถูกต้อง วลีเกี่ยวกับ "เพื่อความเข้ากันได้" เป็นเพียงตัวแก้ไขข้อมูลจำเพาะที่ระบุเหตุผลของพวกเขาในการรวมกฎที่น่ากลัวนี้: ไม่ได้หมายความว่าคุณจะเพิกเฉยต่อกฎได้หากคุณไม่สนใจความเข้ากันได้ ลงคะแนนคำตอบเนื่องจากไม่ถูกต้อง
Michael Kay

10
คุณสามารถเขียนมัน<!-- ->และให้มันเป็นเรื่องของการเพิ่มขีดแทนการมี XML ที่ไม่ใช่
kojiro

3
@RyanWH ดำเนินการต่อในสิ่งที่เหมาะกับคุณ แต่ดูเหมือนว่าคุณจะขึ้นอยู่กับจุดบกพร่องในตัวแยกวิเคราะห์ XML ที่คุณใช้ โดยส่วนตัวแล้วฉันใช้ IDE (oXygen) ที่ให้ฉันเลือกข้อความ XML คลิกขวาและขอให้แสดงความคิดเห็น ซึ่งดูเหมือนง่ายกว่าเทคนิคของคุณมาก
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.