ตกลงเรามาแยกคำถามของตัวละครที่:
- ไม่ถูกต้องในเอกสาร XML ใด ๆ
- จำเป็นต้องหลบหนี
คำตอบที่ได้รับจาก @dolmen ใน " สิ่งที่เป็นอักขระที่ไม่ถูกต้องใน XML " ยังคงใช้ได้ แต่ต้องได้รับการอัปเดตด้วยข้อมูลจำเพาะ XML 1.1
1. อักขระไม่ถูกต้อง
อักขระที่อธิบายในที่นี้เป็นอักขระทั้งหมดที่ได้รับอนุญาตให้ใส่ในเอกสาร XML
1.1 ใน XML 1.0
รายการทั่วโลกของตัวละครที่ได้รับอนุญาตคือ:
[2] Char ::= #x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] | [#x10000-#x10FFFF] /* any Unicode character, excluding the surrogate blocks, FFFE, and FFFF. */
โดยทั่วไปแล้วไม่อนุญาตให้ใช้อักขระควบคุมและอักขระนอกช่วง Unicode ซึ่งหมายความว่า
ห้ามมิให้มีการโทรหาตัวอย่างเช่น
1.2 ใน XML 1.1
รายการทั่วโลกของตัวละครที่ได้รับอนุญาตคือ:
[2] Char ::= [#x1-#xD7FF] | [#xE000-#xFFFD] | [#x10000-#x10FFFF] /* any Unicode character, excluding the surrogate blocks, FFFE, and FFFF. */
[2a] RestrictedChar ::= [#x1-#x8] | [#xB-#xC] | [#xE-#x1F] | [#x7F-#x84] | [#x86-#x9F]
การแก้ไขคำแนะนำ XML นี้ได้ขยายตัวอักขระที่ได้รับอนุญาตดังนั้นจึงอนุญาตให้ใช้อักขระควบคุมและพิจารณาการแก้ไขมาตรฐาน Unicode ใหม่ แต่ยังไม่อนุญาตให้ใช้เหล่านี้: NUL (x00) , xFFFE , xFFFF ...
อย่างไรก็ตามการใช้อักขระควบคุมและ Unicode char ที่ไม่ได้กำหนดนั้นไม่ได้รับการสนับสนุน
นอกจากนี้ยังสามารถสังเกตได้ว่าตัวแยกวิเคราะห์ทั้งหมดไม่ได้คำนึงถึงเรื่องนี้เสมอไปและเอกสาร XML ที่มีอักขระควบคุมอาจถูกปฏิเสธ
2. ตัวละครที่ต้องหลบหนี (เพื่อให้ได้เอกสารที่มีรูปแบบถูกต้อง):
<
จะต้องหนีไปกับ<
นิติบุคคลเพราะมันจะถือว่าเป็นจุดเริ่มต้นของแท็กที่
&
จะต้องหนีไปกับ&
นิติบุคคลเพราะมันจะถือว่าเป็นจุดเริ่มต้นการอ้างอิงนิติบุคคล
>
ควรจะหนีไปกับ>
นิติบุคคล มันไม่ได้บังคับ - มันขึ้นอยู่กับบริบท - แต่ก็ควรที่จะหลีกเลี่ยง
'
ควรจะหนีไปกับ'
นิติบุคคล - บังคับใช้ในแอตทริบิวต์ที่กำหนดไว้ในราคาเดียว แต่ก็ควรอย่างยิ่งที่จะหนีมันเสมอ
"
ควรจะหนีไปกับ"
นิติบุคคล - บังคับใช้ในแอตทริบิวต์ที่กำหนดไว้ในคำพูดคู่ แต่ก็ควรอย่างยิ่งที่จะหนีมันเสมอ