హాయ్! ఈ రోజు మనం XML అనే మరో డేటా ఫార్మాట్ని పరిచయం చేస్తాము. ఇది చాలా ముఖ్యమైన అంశం. నిజమైన జావా అప్లికేషన్లపై పని చేస్తున్నప్పుడు, మీరు ఖచ్చితంగా XML-సంబంధిత పనులను ఎదుర్కొంటారు. జావా డెవలప్మెంట్లో, ఈ ఫార్మాట్ దాదాపు విశ్వవ్యాప్తంగా ఉపయోగించబడుతుంది (ఎందుకో దిగువన మేము కనుగొంటాము), కాబట్టి మీరు ఈ పాఠాన్ని పైపైన సమీక్షించవద్దని నేను సిఫార్సు చేస్తున్నాను, అయితే ప్రతిదానిపై సమగ్ర అవగాహన పొందండి మరియు అదనపు సాహిత్యం/లింక్లను కూడా అధ్యయనం చేయండి :) ఇది ఖచ్చితంగా సమయం వృధా కాదు. కాబట్టి, సులభమైన విషయాలతో ప్రారంభిద్దాం: "ఏమి" మరియు "ఎందుకు"!
జావా XML అంటే ఏమిటి?
XML అంటే ఎక్స్టెన్సిబుల్ మార్కప్ లాంగ్వేజ్. మీకు ఇప్పటికే మార్కప్ భాష తెలిసి ఉండవచ్చు — వెబ్ పేజీలను సృష్టించడానికి ఉపయోగించే HTML గురించి మీరు విన్నారా :) HTML మరియు XML కూడా ఒకే విధమైన రూపాన్ని కలిగి ఉంటాయి:
మరో మాటలో చెప్పాలంటే, XML అనేది డేటాను వివరించే భాష.
మీకు XML ఎందుకు అవసరం?
XML నిజానికి ఇంటర్నెట్ ద్వారా సహా డేటాను మరింత సౌకర్యవంతంగా నిల్వ చేయడానికి మరియు పంపడానికి కనుగొనబడింది. దీన్ని సాధించడంలో మీకు సహాయపడే అనేక ప్రయోజనాలు ఉన్నాయి. మొదటిది, మానవుడు మరియు కంప్యూటర్ రెండింటి ద్వారా చదవడం సులభం. ఈ XML ఫైల్ ఏమి వివరిస్తుందో మీరు సులభంగా అర్థం చేసుకోగలరని నేను భావిస్తున్నాను:
<?xml version="1.0" encoding="UTF-8"?><book><title>HarryPotter and the Philosopher’s Stone</title><author>J. K. Rowling</author><year>1997</year></book>
కంప్యూటర్ కూడా ఈ ఆకృతిని సులభంగా అర్థం చేసుకుంటుంది. రెండవది, డేటా సాదా వచనంగా నిల్వ చేయబడినందున, మేము దానిని ఒక కంప్యూటర్ నుండి మరొకదానికి బదిలీ చేసినప్పుడు అనుకూలత సమస్యలు ఉండవు. XML ఎక్జిక్యూటబుల్ కోడ్ కాదని అర్థం చేసుకోవడం ముఖ్యం — ఇది డేటా వివరణ భాష. మీరు XMLని ఉపయోగించి డేటాను వివరించిన తర్వాత, మీరు ఈ డేటాను పంపగల/స్వీకరించగల/ప్రాసెస్ చేయగల కోడ్ (ఉదాహరణకు, జావాలో) వ్రాయాలి.
XML ఎలా నిర్మితమైంది?
ప్రధాన భాగం ట్యాగ్లు: ఇవి యాంగిల్ బ్రాకెట్లోని విషయాలు:
<book></book>
ఓపెనింగ్ ట్యాగ్లు మరియు క్లోజింగ్ ట్యాగ్లు ఉన్నాయి. ముగింపు ట్యాగ్లో అదనపు గుర్తు (" / ") ఉంది, పై ఉదాహరణలో చూడవచ్చు. ప్రతి ప్రారంభ ట్యాగ్ తప్పనిసరిగా ముగింపు ట్యాగ్ని కలిగి ఉండాలి. ఫైల్లోని ప్రతి మూలకం యొక్క వివరణ ఎక్కడ ప్రారంభమై ముగుస్తుందో అవి చూపుతాయి. ట్యాగ్లను గూడు కట్టుకోవచ్చు! మా పుస్తక ఉదాహరణలో, <book> ట్యాగ్లో 3 సమూహ ట్యాగ్లు ఉన్నాయి: <title>, <author> మరియు <year>. ఇది గూడు యొక్క ఒక స్థాయికి పరిమితం కాదు: సమూహ ట్యాగ్లు వాటి స్వంత సమూహ ట్యాగ్లు మొదలైనవి కలిగి ఉంటాయి. ఈ నిర్మాణాన్ని ట్యాగ్ ట్రీ అంటారు. కారు డీలర్షిప్ను వివరించే నమూనా XML ఫైల్ని ఉపయోగించి ఈ చెట్టును చూద్దాం:
ఇక్కడ మనకు ఉన్నత-స్థాయి ట్యాగ్ ఉంది: <carstore>. దీనిని మూల మూలకం అని కూడా అంటారు. <carstore>కి ఒక చైల్డ్ ట్యాగ్ ఉంది: <car>. <car>, క్రమంగా, 3 చైల్డ్ ట్యాగ్లను కలిగి ఉంది: <model>, <year> మరియు <price>. ప్రతి ట్యాగ్ అదనపు ముఖ్యమైన సమాచారాన్ని కలిగి ఉండే లక్షణాలను కలిగి ఉంటుంది. మా ఉదాహరణలో, <model> ట్యాగ్ "lang" లక్షణాన్ని కలిగి ఉంది, ఇది మోడల్ పేరును రికార్డ్ చేయడానికి ఉపయోగించే భాషను సూచిస్తుంది:
<model lang="en">ScaniaR770</model>
పేరు ఆంగ్లంలో వ్రాయబడిందని ఇక్కడ మేము సూచిస్తున్నాము. మా <price> ట్యాగ్లో "కరెన్సీ" లక్షణం ఉంది.
<price currency="US dollar">150000.00</price>
ఇక్కడ మేము కారు ధర US డాలర్లలో ఇవ్వబడిందని సూచిస్తున్నాము. అందువలన, XML "స్వీయ-వర్ణన" వాక్యనిర్మాణాన్ని కలిగి ఉంది. మీరు డేటాను వివరించడానికి అవసరమైన ఏదైనా సమాచారాన్ని జోడించవచ్చు. అదనంగా, ఫైల్ ఎగువన, మీరు XML సంస్కరణ మరియు డేటాను వ్రాయడానికి ఉపయోగించే ఎన్కోడింగ్ను సూచించే పంక్తిని జోడించవచ్చు. దీనిని "ప్రోలాగ్" అని పిలుస్తారు మరియు ఇది ఇలా కనిపిస్తుంది:
<?xml version="1.0" encoding="UTF-8"?>
మేము XML వెర్షన్ 1.0 మరియు UTF-8 ఎన్కోడింగ్ని ఉపయోగిస్తున్నాము. ఇది అవసరం లేదు, ఉదాహరణకు, మీ ఫైల్ వివిధ భాషల్లోని టెక్స్ట్ని ఉపయోగిస్తే అది ఉపయోగపడుతుంది. XML అంటే "ఎక్స్టెన్సిబుల్ మార్కప్ లాంగ్వేజ్" అని మేము పేర్కొన్నాము, అయితే "ఎక్స్టెన్సిబుల్" అంటే ఏమిటి? మీ వస్తువులు మరియు ఫైల్ల యొక్క కొత్త వెర్షన్లను రూపొందించడానికి ఇది సరైనదని దీని అర్థం. ఉదాహరణకు, మేము మా కార్ డీలర్షిప్లో మోటార్సైకిళ్లను కూడా అమ్మడం ప్రారంభించాలనుకుంటున్నాము! మా ప్రోగ్రామ్ <carstore> రెండు వెర్షన్లకు మద్దతివ్వాలి: పాతది (మోటార్ సైకిళ్లు లేకుండా) మరియు కొత్తది. మా పాత వెర్షన్ ఇక్కడ ఉంది:
మా ఫైల్కి మోటార్సైకిళ్ల వివరణను జోడించడం ఎంత సులభం మరియు సులభం :) ఇంకా ఏమిటంటే, కార్ల కోసం మోటార్సైకిళ్లకు ఒకే రకమైన చైల్డ్ ట్యాగ్లను కలిగి ఉండవలసిన అవసరం లేదు. కార్ల వలె కాకుండా మోటార్ సైకిళ్ళు <యజమాని> మూలకాన్ని కలిగి ఉన్నాయని దయచేసి గమనించండి. ఇది కంప్యూటర్ (లేదా మానవుడు) డేటాను చదవకుండా నిరోధించదు.
XML మరియు HTML మధ్య తేడాలు
XML మరియు HTML రూపాన్ని చాలా పోలి ఉన్నాయని మేము ఇప్పటికే చెప్పాము. అవి ఎలా విభిన్నంగా ఉన్నాయో తెలుసుకోవడం చాలా ముఖ్యం. మొదట, వారు వివిధ ప్రయోజనాల కోసం ఉపయోగిస్తారు. HTML అనేది వెబ్ పేజీలను గుర్తించడం కోసం. ఉదాహరణకు, వెబ్సైట్ను సృష్టించేటప్పుడు, మీరు పేర్కొనడానికి HTMLని ఉపయోగించవచ్చు: "మెను కుడి ఎగువ మూలలో ఉండాలి. ఇది అలాంటి బటన్లను కలిగి ఉండాలి". ఇతర మాటలలో, HTML యొక్క పని డేటాను ప్రదర్శించడం. XML అనేది మానవులకు మరియు కంప్యూటర్లకు అనుకూలమైన రూపంలో సమాచారాన్ని నిల్వ చేయడానికి మరియు పంపడానికి. ఈ ఫార్మాట్లో ఈ డేటా ఎలా ప్రదర్శించబడాలి అనే దాని గురించి ఎటువంటి సూచన లేదు: అది చదివే ప్రోగ్రామ్ కోడ్పై ఆధారపడి ఉంటుంది. రెండవది, ఒక ప్రధాన సాంకేతిక వ్యత్యాసం ఉంది. HTML ట్యాగ్లు ముందే నిర్వచించబడ్డాయి. మరో మాటలో చెప్పాలంటే, HTML హెడర్ను సృష్టించడం (ఉదాహరణకు, పేజీ ఎగువన ఉన్న పెద్ద శీర్షిక) <h1> </h1> మాత్రమే ఉపయోగిస్తుంది ట్యాగ్లు (<h2> </h2> మరియు <h3> </h3> చిన్న హెడర్ల కోసం ఉపయోగించబడతాయి). మీరు ఇతర ట్యాగ్లను ఉపయోగించి HTML హెడర్లను సృష్టించలేరు. XML ముందే నిర్వచించిన ట్యాగ్లను ఉపయోగించదు. మీరు ట్యాగ్లకు మీకు కావలసిన పేరును ఇవ్వవచ్చు: <header>, <title>, <idontknow2121>.
సంఘర్షణ పరిష్కారం
XML అందించే స్వేచ్ఛ కొన్ని సమస్యలకు దారి తీస్తుంది. ఉదాహరణకు, వివిధ ప్రయోజనాల కోసం ప్రోగ్రామ్ ద్వారా ఒకే ఎంటిటీని (ఉదాహరణకు, కారు) ఉపయోగించవచ్చు. ఉదాహరణకు, కార్లను వివరించే XML ఫైల్ మా వద్ద ఉంది. అయినప్పటికీ, మా ప్రోగ్రామర్లు తమలో తాము ముందస్తు ఒప్పందాన్ని కుదుర్చుకోలేదు. ఇప్పుడు, నిజమైన కార్ల గురించిన డేటాతో పాటు, మేము మా XMLలో బొమ్మ కార్ల గురించిన డేటాను కనుగొనవచ్చు! అంతేకాక, వారు ఒకే లక్షణాలను కలిగి ఉంటారు. మన ప్రోగ్రామ్ అటువంటి XML ఫైల్లో చదువుతుందని అనుకుందాం. బొమ్మ కారు నుండి నిజమైన కారును ఎలా వేరు చేయాలి?
ఇక్కడ ఉపసర్గలు మరియు నేమ్స్పేస్ మాకు సహాయపడతాయి. మా ప్రోగ్రామ్లోని బొమ్మ కార్లను నిజమైన వాటి నుండి వేరు చేయడానికి (మరియు వాస్తవానికి వాటి నిజమైన ప్రతిరూపాల నుండి ఏదైనా బొమ్మలు), మేము రెండు ఉపసర్గలను పరిచయం చేస్తాము: "నిజమైన" మరియు "బొమ్మ".
ఇప్పుడు మా ప్రోగ్రామ్ వివిధ ఎంటిటీల మధ్య తేడాను గుర్తించగలదు! బొమ్మల ఉపసర్గ ఉన్న ప్రతిదీ బొమ్మలుగా పరిగణించబడుతుంది :) అయినప్పటికీ, మేము ఇంకా పూర్తి చేయలేదు. ఉపసర్గలను ఉపయోగించడానికి, మనం వాటిలో ప్రతి ఒక్కటి నేమ్స్పేస్గా నమోదు చేసుకోవాలి. అసలైన, "రిజిస్టర్" అనేది బలమైన పదం :) మనం వాటిలో ప్రతిదానికి ఒక ప్రత్యేకమైన పేరును తీసుకురావాలి. ఇది తరగతులతో సమానంగా ఉంటుంది: తరగతికి చిన్న పేరు ( పిల్లి ) మరియు అన్ని ప్యాకేజీలను కలిగి ఉన్న పూర్తి అర్హత కలిగిన పేరు ( zoo.animals.Cat) URI సాధారణంగా ప్రత్యేకమైన నేమ్స్పేస్ పేరును సృష్టించడానికి ఉపయోగించబడుతుంది. కొన్నిసార్లు ఇది ఇంటర్నెట్ చిరునామాను ఉపయోగించి చేయబడుతుంది, ఇక్కడ ఈ నేమ్స్పేస్ యొక్క విధులు వివరించబడ్డాయి. కానీ ఇది చెల్లుబాటు అయ్యే ఇంటర్నెట్ చిరునామాగా ఉండవలసిన అవసరం లేదు. చాలా తరచుగా, ప్రాజెక్ట్లు నేమ్స్పేస్ సోపానక్రమాన్ని ట్రాక్ చేయడంలో సహాయపడే URI-వంటి స్ట్రింగ్లను ఉపయోగిస్తాయి. ఇక్కడ ఒక ఉదాహరణ:
వాస్తవానికి, "http://testproject.developersgroup1.companyname/department2/namespaces/real"లో వెబ్సైట్ లేదు కానీ ఈ స్ట్రింగ్ ఉపయోగకరమైన సమాచారాన్ని కలిగి ఉంది: డిపార్ట్మెంట్ 2లోని గ్రూప్ 1 డెవలపర్లు "నిజమైన" నేమ్స్పేస్ను రూపొందించడానికి బాధ్యత వహిస్తారు. . మేము కొత్త పేర్లను పరిచయం చేయవలసి వస్తే లేదా సాధ్యమయ్యే వైరుధ్యాలను చర్చించవలసి వస్తే, ఎక్కడికి వెళ్లాలో మాకు తెలుస్తుంది. కొన్నిసార్లు డెవలపర్లు నిజమైన వివరణాత్మక వెబ్ చిరునామాను ప్రత్యేక నేమ్స్పేస్ పేరుగా ఉపయోగిస్తారు. ఉదాహరణకు, ప్రపంచవ్యాప్తంగా మిలియన్ల మంది ప్రజలు ఉపయోగించుకునే ప్రాజెక్ట్ యొక్క పెద్ద కంపెనీకి ఇది సందర్భం కావచ్చు. కానీ ఇది ఖచ్చితంగా ఎల్లప్పుడూ జరగదు: స్టాక్ ఓవర్ఫ్లో ఈ సమస్యపై చర్చ ఉంది. సాధారణంగా, URIలను నేమ్స్పేస్ పేర్లుగా ఉపయోగించాల్సిన అవసరం లేదు: మీరు యాదృచ్ఛిక స్ట్రింగ్లను కూడా ఉపయోగించవచ్చు. ఈ ఎంపిక కూడా పని చేస్తుంది:
XML ప్రమాణాలు అనేది XML ఫైల్లకు అదనపు కార్యాచరణను జోడించే పొడిగింపుల సమితి. XML చాలా ప్రమాణాలను కలిగి ఉంది, కానీ మేము చాలా ముఖ్యమైన వాటిని పరిశీలిస్తాము మరియు అవి AJAXని సాధ్యం చేస్తాయి, ఇది అత్యంత ప్రసిద్ధ XML ప్రమాణాలలో ఒకటి. ఇది వెబ్ పేజీని రీలోడ్ చేయకుండానే దాని కంటెంట్లను మార్చడానికి మిమ్మల్ని అనుమతిస్తుంది! XSLT మిమ్మల్ని XML వచనాన్ని ఇతర ఫార్మాట్లకు మార్చడానికి అనుమతిస్తుంది. ఉదాహరణకు, మీరు XMLని HTMLకి మార్చడానికి XSLTని ఉపయోగించవచ్చు! మేము చెప్పినట్లుగా, XML యొక్క ఉద్దేశ్యం డేటాను వివరించడం, దానిని ప్రదర్శించడం కాదు. కానీ XSLTతో మనం ఈ పరిమితిని అధిగమించవచ్చు! XML DOM అనేది XML ఫైల్ నుండి వ్యక్తిగత మూలకాలను తిరిగి పొందేందుకు, సవరించడానికి, జోడించడానికి లేదా తొలగించడానికి మిమ్మల్ని అనుమతిస్తుంది. ఇది ఎలా పని చేస్తుందో ఇక్కడ ఒక చిన్న ఉదాహరణ. మాకు Book.xml ఫైల్ ఉంది:
<bookstore><book category="cooking"><title lang="en">EverydayItalian</title><author>GiadaDeLaurentiis</author><year>2005</year><price>30.00</price></book><book category="children"><title lang="en">HarryPotter</title><author>J. K. Rowling</author><year>2005</year><price>29.99</price></book></bookstore>
ఇందులో రెండు పుస్తకాలున్నాయి. పుస్తకాలలో <title> మూలకం ఉంటుంది. ఇక్కడ మేము మా XML ఫైల్ నుండి అన్ని పుస్తక శీర్షికలను పొందడానికి JavaScriptని ఉపయోగించవచ్చు మరియు మొదటిదాన్ని కన్సోల్కు ముద్రించవచ్చు:
DTD ("పత్రం రకం నిర్వచనం") XML ఫైల్లోని ఎంటిటీ కోసం అనుమతించబడిన మూలకాల జాబితాను నిర్వచించడానికి మిమ్మల్ని అనుమతిస్తుంది. ఉదాహరణకు, మేము బుక్స్టోర్ వెబ్సైట్లో పని చేస్తున్నాము మరియు XML ఫైల్లలోని పుస్తక మూలకాల కోసం శీర్షిక, రచయిత మరియు సంవత్సర లక్షణాలను మాత్రమే పేర్కొనాలని అన్ని అభివృద్ధి బృందాలు అంగీకరిస్తున్నాయని అనుకుందాం. కానీ అజాగ్రత్త నుండి మనల్ని మనం ఎలా రక్షించుకోవాలి? చాలా సులభం!
<?xml version="1.0"?><!DOCTYPE book [<!ELEMENT book (title,author,year)><!ELEMENT title (#PCDATA)><!ELEMENT author (#PCDATA)><!ELEMENT year (#PCDATA)>]><book><title>TheLord of TheRings</title><author>JohnR.R. Tolkien</author><year>1954</year></book>
ఇక్కడ మేము <book> కోసం చెల్లుబాటు అయ్యే లక్షణాల జాబితాను నిర్వచించాము. అక్కడ కొత్త మూలకాన్ని జోడించడానికి ప్రయత్నించండి మరియు మీరు వెంటనే ఎర్రర్ను పొందుతారు!
<book><title>TheLord of TheRings</title><author>JohnR.R. Tolkien</author><year>1954</year><mainhero>FrodoBaggins</mainhero></book>
లోపం! "ఎలిమెంట్ మెయిన్హీరో ఇక్కడ అనుమతించబడదు" అనేక ఇతర XML ప్రమాణాలు ఉన్నాయి. మీరు వాటిలో ప్రతిదానితో మిమ్మల్ని పరిచయం చేసుకోవచ్చు మరియు కోడ్ను లోతుగా తీయడానికి ప్రయత్నించవచ్చు. ఏమైనప్పటికీ, మీకు XMLపై సమాచారం అవసరమైతే, మీరు దాదాపు ప్రతిదీ అక్కడ కనుగొనవచ్చు :) మరియు దీనితో, మా పాఠం ముగుస్తుంది. ఇది విధులకు తిరిగి రావడానికి సమయం! :) మరల సారి వరకు!
0
వ్యాఖ్యలు
జనాదరణ పొందినది
కొత్తది
పాతది
వ్యాఖ్యానించడానికి మీరు తప్పనిసరిగా సైన్ ఇన్ చేసి ఉండాలి