ฉันจะหลีกเลี่ยงอัญประกาศคู่ในค่าแอตทริบิวต์ XML ได้อย่างไร


138

จากการทดลองต่อไปนี้

<tag attr="\"">
<tag attr="<![CDATA["]]>">
<tag attr='"'>

เฉพาะอันสุดท้ายเท่านั้นที่ใช้ได้กับตัวแยกวิเคราะห์ XML ที่ฉันใช้อยู่ที่นี่ มีทางเลือกอื่นหรือไม่?


1
&quot;คือคำตอบ; นี่คือคำอธิบาย
kjhughes

คำตอบ:


223

คุณสามารถใช้ได้ &quot;


3
ชัดเจนและอนุสัญญาการตั้งชื่อที่ยาวกว่าดีกว่าตัวย่อหรือย่อให้สั้นเมื่อการตั้งชื่อตัวแปรฟังก์ชันแอตทริบิวต์หรืออื่น ๆ ; ฉันจะใช้ความชัดเจนมากกว่าช่วงเวลาสั้น ๆ ทุกครั้ง - เป็นความคิดเห็นที่ไม่พึงประสงค์ของฉัน
Daniel Sokolowski

1
ฉันเห็นด้วยกับแดเนียล ความกะทัดรัดอาจช่วยให้คุณประหยัดเวลาในการพิมพ์ 1 วินาที แต่จากนั้นผู้คนต้องใช้เวลา 10 นาทีในการหาว่าเกิดอะไรขึ้น
NL3294

@Daniel Sokolowski: คุณสองคนหมายถึงอะไร? มีบริบทที่หายไป (เช่นความคิดเห็นที่ถูกลบ) หรือไม่?
Peter Mortensen

ต้องเป็น @PeterMortensen ฉันลืมไปแล้วว่าเกือบ 7 ปีที่แล้ว :)
Daniel Sokolowski

54

จากข้อกำหนด XML :

หากต้องการอนุญาตให้ค่าแอตทริบิวต์มีทั้งเครื่องหมายอัญประกาศเดี่ยวและเครื่องหมายอัญประกาศคู่อักขระเครื่องหมายอัญประกาศเดี่ยวหรือเครื่องหมายอัญประกาศเดี่ยว (') อาจแสดงเป็น "& apos;" และอักขระเครื่องหมายคำพูดคู่ (") เป็น" & quot; "


17

ตัวละครอัญประกาศคู่ ( ") สามารถหลบหนีได้&quot;แต่นี่เป็นเรื่องราวที่เหลือ ...

ต้องใช้อักขระเครื่องหมายคำพูดคู่ในบริบทนี้:

  • ในแอตทริบิวต์ XML คั่นด้วยเครื่องหมายคำพูดคู่:

    <EscapeNeeded name="Pete &quot;Maverick&quot; Mitchell"/>

ไม่จำเป็นต้องใช้อักขระเครื่องหมายคำพูดคู่ในบริบทส่วนใหญ่:

  • ในเนื้อหาที่เป็นข้อความ XML:

    <NoEscapeNeeded>He said, "Don't quote me."</NoEscapeNeeded>
  • ในแอตทริบิวต์ XML คั่นด้วยเครื่องหมายคำพูดเดี่ยว ( '):

    <NoEscapeNeeded name='Pete "Maverick" Mitchell'/>

    ในทำนองเดียวกัน ( ') ไม่จำเป็นต้องใช้ Escape หาก ( ") ใช้สำหรับตัวคั่นค่าแอตทริบิวต์:

    <NoEscapeNeeded name="Pete 'Maverick' Mitchell"/>

ดูสิ่งนี้ด้วย


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.