Theory
एक ग़लत tag, कोई build नहीं
Android एक FestConnect layout को build नहीं करेगा अगर एक भी tag malformed है: एक missing close, एक unquoted value, एक crossed nesting। XML जानबूझकर strict है, और rules कम हैं।
यह lesson parts को नाम देता है, declaration, tags, और elements, और वे मुट्ठी भर rules जो XML को well-formed बनाते हैं। इन्हें पकड़िए और आप अपने project या किसी exam में कोई भी XML file पढ़ और fix कर सकते हैं।
Theory
गणित में matching brackets
गणित में, हर opening bracket को एक closing चाहिए, और वे cross नहीं होनी चाहिए: (a + [b]) ठीक है, (a + [b)] ग़लत है। XML tags वही हैं। <a><b></b></a> साफ़ nest होता है; <a><b></a></b> cross करता है और invalid है। अगर आप brackets balance कर सकते हैं, आप XML tags nest कर सकते हैं, यह वही discipline है, open फिर सही order में close करना।
Theory
Declaration, tags, elements
- Declaration: पहली line,
<?xml version="1.0" encoding="UTF-8"?>(details अगले lesson में)। - Tag: markup ख़ुद, एक start tag
<year>और एक end tag</year>। एक empty element self-close हो सकता है:<line/>। - Element: एक start tag, इसका content, और इसका end tag साथ:
<year>2</year>। Elements nest हो सकते हैं। - Attribute: एक start tag के अंदर एक
name="value"pair; value हमेशा quoted है।
Well-formed का मतलब है: हर tag close होता है, nesting cross नहीं होती, और attributes quoted हैं।
Practical
Elements, attributes, self-closing
<?xml version="1.0" encoding="UTF-8"?>
<registration id="F-108"> <!-- id is an ATTRIBUTE (quoted) -->
<name>Aditi Shah</name> <!-- element: start + content + end -->
<year>2</year>
<events>
<event>Robotics</event> <!-- nested elements -->
<event>Dance</event>
</events>
<confirmed/> <!-- empty, self-closing element -->
</registration>Think first
Spot कीजिए इसे well-formed क्या बनाता है
Snippet में, एक element, एक attribute, और एक self-closing (empty) element बताइए। फिर बताइए <name>Aditi Shah अकेला file क्यों तोड़ देगा।
Show the answer
एक element: <year>2</year> (start tag, content 2, end tag)। एक attribute: <registration> start tag के अंदर id="F-108", value quoted। एक self-closing element: <confirmed/>। <name>Aditi Shah अकेला file तोड़ता है क्योंकि इसका कोई closing </name> नहीं है; XML को हर element close होना चाहिए, तो एक unclosed tag document को well-formed नहीं रहने देता और Android इसे build करने से मना करता है।
Quiz
कौन सी line well-formed XML NAHIN है?
- <event name=Robotics> (attribute value quoted नहीं है)
- <event name="Robotics"></event>
- <confirmed/>
- <year>2</year>
Show the answer
<event name=Robotics> (attribute value quoted नहीं है)
XML को attribute values quotes में चाहिए, तो बिना quotes के name=Robotics well-formed नहीं है (A)। Quoted version (B) सही है। एक self-closing empty element <confirmed/> valid है (C), और content वाला एक normal element <year>2</year> valid है (D)। Unquoted attributes, unclosed tags, और crossed nesting तीन तरीक़े हैं जिनसे XML सबसे ज़्यादा well-formed होने में fail होता है।
Watch out
Syntax traps
1. Unquoted attribute values: width=match_parent fail होता है; XML को width="match_parent" चाहिए।
2. Unclosed tags: हर element को एक end tag चाहिए, या self-close करना ज़रूरी है (<confirmed/>)। HTML <br> माफ़ कर देता है; XML नहीं।
3. Crossed nesting: <a><b></a></b> invalid है; matched brackets की तरह inner element को outer से पहले close कीजिए।
Theory
दो rules अपने lessons deserve करते हैं
दो well-formedness rules अकेले study करने लायक़ बड़े हैं। अगला lesson single root element (एक XML document में exactly एक outermost element होना ज़रूरी है) और case sensitivity (<Name> और <name> अलग tags हैं, और इनका open/close match होना ज़रूरी है) cover करता है। दोनों guaranteed exam points हैं और कई 'यह build क्यों नहीं होगा' moments का कारण हैं।
Summary
Key takeaways
- XML एक declaration से शुरू हो सकता है: <?xml version="1.0" encoding="UTF-8"?>।
- एक tag markup है (start <year> और end </year>); एक empty element self-close करता है: <confirmed/>।
- एक element है start tag + content + end tag, जैसे <year>2</year>; elements nest हो सकते हैं।
- Attributes start tag में name="value" pairs हैं, और values quoted होने ज़रूरी हैं।
- Well-formed का मतलब है हर tag close होता है, nesting cross नहीं होती, और attributes quoted हैं।
- Memory hook: XML tags गणित के brackets की तरह balance होते हैं।