เพื่อให้เข้าใจถึง "เข้ารหัส" แอตทริบิวต์คุณต้องเข้าใจความแตกต่างระหว่างไบต์และตัวอักษร
คิดว่าไบต์เป็นตัวเลขระหว่าง 0 ถึง 255 ในขณะที่อักขระคือ "a" "1" และ "Ä" ชุดของอักขระทั้งหมดที่พร้อมใช้งานเรียกว่าชุดอักขระชุดตัวอักษร
อักขระแต่ละตัวมีลำดับของหนึ่งหรือหลายไบต์ที่ใช้แทนมัน อย่างไรก็ตามจำนวนและค่าที่แน่นอนของไบต์นั้นขึ้นอยู่กับการเข้ารหัสที่ใช้และมีการเข้ารหัสที่แตกต่างกันมากมาย
การเข้ารหัสส่วนใหญ่จะขึ้นอยู่กับชุดอักขระเก่าและการเข้ารหัสที่เรียกว่า ASCII ซึ่งเป็นไบต์เดียวต่ออักขระ (จริงๆแล้วมีเพียง 7 บิต) และมีอักขระ 128 ตัวรวมถึงอักขระทั่วไปจำนวนมากที่ใช้ในภาษาอังกฤษแบบสหรัฐอเมริกา
ตัวอย่างเช่นต่อไปนี้เป็นอักขระ 6 ตัวในชุดอักขระ ASCII ที่แสดงด้วยค่า 60 ถึง 65
Extract of ASCII Table 60-65
╔══════╦══════════════╗
║ Byte ║ Character ║
╠══════╬══════════════║
║ 60 ║ < ║
║ 61 ║ = ║
║ 62 ║ > ║
║ 63 ║ ? ║
║ 64 ║ @ ║
║ 65 ║ A ║
╚══════╩══════════════╝
ในชุด ASCII แบบเต็มค่าต่ำสุดที่ใช้คือศูนย์และค่าสูงสุดคือ 127 (ทั้งสองค่านี้เป็นอักขระควบคุมที่ซ่อนอยู่)
อย่างไรก็ตามเมื่อคุณเริ่มต้องการอักขระมากกว่าที่ ASCII พื้นฐานมีให้ (ตัวอย่างเช่นตัวอักษรที่มีสำเนียงสัญลักษณ์สกุลเงินสัญลักษณ์กราฟิก ฯลฯ ) ASCII จะไม่เหมาะสมและคุณต้องการอะไรที่ครอบคลุมมากขึ้น คุณต้องการอักขระเพิ่มเติม (ชุดอักขระที่แตกต่างกัน) และคุณต้องมีการเข้ารหัสที่แตกต่างกันเนื่องจากอักขระ 128 ตัวไม่เพียงพอที่จะใส่อักขระทั้งหมดได้การเข้ารหัสบางตัวมีอักขระหนึ่งไบต์ (256 อักขระ) หรือไม่เกินหกไบต์
เมื่อเวลาผ่านไปมีการสร้างการเข้ารหัสจำนวนมาก ในโลกของ Windows มี CP1252 หรือ ISO-8859-1 ในขณะที่ผู้ใช้ Linux มักจะชอบ UTF-8 Java ใช้ UTF-16 โดยกำเนิด
ลำดับหนึ่งของค่าไบต์สำหรับอักขระในการเข้ารหัสหนึ่งตัวอาจแทนอักขระที่แตกต่างกันโดยสิ้นเชิงในการเข้ารหัสอื่นหรืออาจไม่ถูกต้อง
ยกตัวอย่างเช่นในมาตรฐาน ISO 8859-1 , âเป็นตัวแทนจากหนึ่งไบต์ของมูลค่า226
ในขณะที่ในUTF-8195, 162
มันเป็นไบต์ที่สอง: อย่างไรก็ตามในมาตรฐาน ISO 8859-1 , 195, 162
จะเป็นตัวละครทั้งสองเป็น¢
คิดว่า XML ไม่ใช่ลำดับของอักขระ แต่เป็นลำดับไบต์
ลองนึกภาพระบบที่ได้รับ XML 195, 162
เห็นไบต์ มันรู้ได้อย่างไรว่าตัวละครเหล่านี้คืออะไร?
เพื่อให้ระบบตีความไบต์เหล่านั้นเป็นอักขระจริง (ดังนั้นจึงแสดงหรือแปลงเป็นการเข้ารหัสอื่น) จำเป็นต้องทราบการเข้ารหัสที่ใช้ใน XML
เนื่องจากการเข้ารหัสทั่วไปส่วนใหญ่เข้ากันได้กับ ASCII ตราบเท่าที่อักขระและสัญลักษณ์ตามตัวอักษรพื้นฐานยังคงอยู่ในกรณีเหล่านี้การประกาศนั้นสามารถหลีกเลี่ยงได้โดยใช้เพียงอักขระ ASCII เพื่อบอกว่าการเข้ารหัสคืออะไร ในกรณีอื่น ๆ ตัวแยกวิเคราะห์จะต้องพยายามหาการเข้ารหัสของการประกาศ เนื่องจากรู้ว่าการประกาศเริ่มต้นด้วย<?xml
การทำสิ่งนี้ทำได้ง่ายกว่ามาก
ในที่สุดversion
แอตทริบิวต์ระบุเวอร์ชัน XML ซึ่งมีอยู่สองเวอร์ชันในขณะนี้ (ดูเวอร์ชัน XML ของ Wikipediaมีความแตกต่างเล็กน้อยระหว่างเวอร์ชันดังนั้นตัวแยกวิเคราะห์ XML จึงจำเป็นต้องทราบว่าเกี่ยวข้องกับอะไรในกรณีส่วนใหญ่ (สำหรับภาษาอังกฤษ ลำโพงอยู่แล้ว) เวอร์ชัน 1.0 ก็เพียงพอแล้ว