வணக்கம்! இன்று நாம் XML எனப்படும் மற்றொரு தரவு வடிவமைப்பை அறிமுகப்படுத்துவோம். இது மிகவும் முக்கியமான தலைப்பு. உண்மையான ஜாவா பயன்பாடுகளில் பணிபுரியும் போது, நீங்கள் நிச்சயமாக XML தொடர்பான பணிகளை சந்திப்பீர்கள். ஜாவா மேம்பாட்டில், இந்த வடிவம் கிட்டத்தட்ட உலகளவில் பயன்படுத்தப்படுகிறது (ஏன் என்பதை கீழே கண்டுபிடிப்போம்), எனவே இந்த பாடத்தை மேலோட்டமாக மதிப்பாய்வு செய்ய வேண்டாம், மாறாக எல்லாவற்றையும் முழுமையாகப் புரிந்துகொண்டு கூடுதல் இலக்கியம்/இணைப்புகளைப் படிக்கவும் :) இது நிச்சயமாக நேரத்தை வீணடிக்காது. எனவே, எளிதான விஷயங்களுடன் தொடங்குவோம்: "என்ன" மற்றும் "ஏன்"!
ஜாவா எக்ஸ்எம்எல் என்றால் என்ன?
எக்ஸ்எம்எல் என்பது எக்ஸ்டென்சிபிள் மார்க்அப் லாங்குவேஜைக் குறிக்கிறது. மார்க்அப் மொழி உங்களுக்கு ஏற்கனவே தெரிந்திருக்கலாம் — வலைப்பக்கங்களை உருவாக்கப் பயன்படும் HTML பற்றி கேள்விப்பட்டிருக்கிறீர்களா :) HTML மற்றும் XML ஆகியவை ஒரே மாதிரியான தோற்றத்தைக் கொண்டுள்ளன:
வேறு வார்த்தைகளில் கூறுவதானால், XML என்பது தரவை விவரிக்கும் ஒரு மொழி.
உங்களுக்கு ஏன் எக்ஸ்எம்எல் தேவை?
எக்ஸ்எம்எல், இணையம் உட்பட, தரவை மிகவும் வசதியாகச் சேமித்து அனுப்புவதற்கு முதலில் கண்டுபிடிக்கப்பட்டது. இதை அடைய உங்களுக்கு உதவும் பல நன்மைகள் உள்ளன. முதலாவதாக, மனிதனாலும் கணினியாலும் படிக்க எளிதானது. இந்த XML கோப்பு என்ன விவரிக்கிறது என்பதை நீங்கள் எளிதாகப் புரிந்து கொள்ளலாம் என்று நினைக்கிறேன்:
<?xml version="1.0" encoding="UTF-8"?>
<book>
<title>Harry Potter and the Philosopher’s Stone</title>
<author>J. K. Rowling</author>
<year>1997</year>
</book>
கணினியும் இந்த வடிவத்தை எளிதில் புரிந்து கொள்ளும். இரண்டாவதாக, தரவு சாதாரண உரையாக சேமிக்கப்படுவதால், அதை ஒரு கணினியிலிருந்து மற்றொரு கணினிக்கு மாற்றும்போது இணக்கத்தன்மை சிக்கல்கள் இருக்காது. XML என்பது இயங்கக்கூடிய குறியீடு அல்ல - இது ஒரு தரவு விளக்க மொழி. XML ஐப் பயன்படுத்தி தரவை விவரித்த பிறகு, இந்தத் தரவை அனுப்ப/பெற/செயலாக்கக்கூடிய குறியீட்டை (உதாரணமாக, ஜாவாவில்) எழுத வேண்டும்.
எக்ஸ்எம்எல் எவ்வாறு கட்டமைக்கப்பட்டுள்ளது?
முக்கிய கூறு குறிச்சொற்கள்: இவை கோண அடைப்புக்குறிக்குள் உள்ள விஷயங்கள்:
<book>
</book>
தொடக்க குறிச்சொற்கள் மற்றும் மூடும் குறிச்சொற்கள் உள்ளன. மேலே உள்ள எடுத்துக்காட்டில் காணக்கூடியது போல், மூடும் குறிச்சொல்லில் கூடுதல் சின்னம் (" / ") உள்ளது. ஒவ்வொரு தொடக்கக் குறிச்சொல்லும் ஒரு மூடும் குறிச்சொல்லைக் கொண்டிருக்க வேண்டும். கோப்பில் உள்ள ஒவ்வொரு உறுப்பின் விளக்கமும் எங்கிருந்து தொடங்குகிறது மற்றும் முடிவடைகிறது என்பதை அவை காட்டுகின்றன. குறிச்சொற்களை உள்ளமைக்கலாம்! எங்கள் புத்தக உதாரணத்தில், <book> குறிச்சொல்லில் 3 உள்ளமை குறிச்சொற்கள் உள்ளன: <title>, <author> மற்றும் <year>. இது ஒரு நிலை கூடு கட்டுதல் மட்டும் அல்ல: உள்ளமை குறிச்சொற்கள் அவற்றின் சொந்த உள்ளமை குறிச்சொற்கள், முதலியன இருக்கலாம். இந்த அமைப்பு டேக் ட்ரீ என்று அழைக்கப்படுகிறது. கார் டீலர்ஷிப்பை விவரிக்கும் மாதிரி எக்ஸ்எம்எல் கோப்பைப் பயன்படுத்தி இந்த மரத்தைப் பார்ப்போம்:
இங்கே எங்களிடம் ஒரு உயர்நிலை குறிச்சொல் உள்ளது: <carstore>. இது ஒரு மூல உறுப்பு என்றும் அழைக்கப்படுகிறது. <carstore> க்கு ஒரு குழந்தை குறிச்சொல் உள்ளது: <car>. <car>, இதையொட்டி, 3 குழந்தை குறிச்சொற்களையும் கொண்டுள்ளது: <model>, <year> மற்றும் <price>. ஒவ்வொரு குறிச்சொல்லும் கூடுதல் முக்கியமான தகவல்களைக் கொண்டிருக்கும் பண்புக்கூறுகளைக் கொண்டிருக்கலாம். எங்கள் எடுத்துக்காட்டில், <model> குறிச்சொல்லில் "lang" பண்புக்கூறு உள்ளது, இது மாதிரி பெயரைப் பதிவுசெய்யப் பயன்படுத்தப்படும் மொழியைக் குறிக்கிறது:
<model lang="en">Scania R 770</model>
பெயர் ஆங்கிலத்தில் எழுதப்பட்டிருப்பதை இங்கே குறிப்பிடுகிறோம். எங்கள் <price> குறிச்சொல்லில் "நாணயம்" பண்பு உள்ளது.
<price currency="US dollar">150000.00</price>
காரின் விலை அமெரிக்க டாலர்களில் கொடுக்கப்பட்டிருப்பதை இங்கே குறிப்பிடுகிறோம். எனவே, எக்ஸ்எம்எல் ஒரு "சுய-விவரிக்க" தொடரியல் உள்ளது. தரவை விவரிக்க தேவையான எந்த தகவலையும் நீங்கள் சேர்க்கலாம். கூடுதலாக, கோப்பின் மேற்புறத்தில், XML பதிப்பு மற்றும் தரவை எழுதப் பயன்படுத்தப்படும் குறியாக்கத்தைக் குறிக்கும் ஒரு வரியைச் சேர்க்கலாம். இது "புரோலாக்" என்று அழைக்கப்படுகிறது மற்றும் இது போல் தெரிகிறது:
<?xml version="1.0" encoding="UTF-8"?>
நாங்கள் XML பதிப்பு 1.0 மற்றும் UTF-8 குறியாக்கத்தைப் பயன்படுத்துகிறோம். இது தேவையில்லை, எடுத்துக்காட்டாக, உங்கள் கோப்பு வெவ்வேறு மொழிகளில் உரையைப் பயன்படுத்தினால், இது பயனுள்ளதாக இருக்கும். எக்ஸ்எம்எல் என்றால் "எக்ஸ்டென்சிபிள் மார்க்அப் லாங்குவேஜ்" என்று நாங்கள் குறிப்பிட்டோம், ஆனால் "எக்ஸ்டென்சிபிள்" என்றால் என்ன? இதன் பொருள் உங்கள் பொருள்கள் மற்றும் கோப்புகளின் புதிய பதிப்புகளை உருவாக்க இது சரியானது. உதாரணமாக, நாங்கள் எங்கள் கார் டீலர்ஷிப்பில் மோட்டார் சைக்கிள்களை விற்பனை செய்ய விரும்புகிறோம் என்று வைத்துக்கொள்வோம்! எங்கள் நிரல் <carstore> இன் இரண்டு பதிப்புகளையும் ஆதரிக்க வேண்டும்: பழையது (மோட்டார் சைக்கிள்கள் இல்லாமல்) மற்றும் புதியது. எங்கள் பழைய பதிப்பு இங்கே:
எங்கள் கோப்பில் மோட்டார் சைக்கிள்களின் விளக்கத்தைச் சேர்ப்பது எவ்வளவு எளிதானது மற்றும் எளிமையானது :) மேலும் என்னவென்றால், கார்களுக்கு இருக்கும் அதே குழந்தை குறிச்சொற்களை மோட்டார் சைக்கிள்களுக்கும் வைத்திருக்க வேண்டிய அவசியமில்லை. கார்களைப் போலல்லாமல், மோட்டார் சைக்கிள்களில் <உரிமையாளர்> உறுப்பு உள்ளது என்பதை நினைவில் கொள்ளவும். இது கணினி (அல்லது மனிதன்) தரவைப் படிப்பதைத் தடுக்காது.
XML மற்றும் HTML இடையே உள்ள வேறுபாடுகள்
எக்ஸ்எம்எல் மற்றும் எச்டிஎம்எல் தோற்றத்தில் மிகவும் ஒத்தவை என்று நாங்கள் ஏற்கனவே கூறியுள்ளோம். அவை எவ்வாறு வேறுபடுகின்றன என்பதை அறிவது மிகவும் முக்கியமானது. முதலில், அவை வெவ்வேறு நோக்கங்களுக்காகப் பயன்படுத்தப்படுகின்றன. HTML என்பது வலைப்பக்கங்களைக் குறிக்கும். எடுத்துக்காட்டாக, ஒரு வலைத்தளத்தை உருவாக்கும் போது, நீங்கள் குறிப்பிடுவதற்கு HTML ஐப் பயன்படுத்தலாம்: "மெனு மேல் வலது மூலையில் இருக்க வேண்டும். இது போன்ற பொத்தான்கள் இருக்க வேண்டும்". வேறு வார்த்தைகளில் கூறுவதானால், HTML இன் வேலை தரவைக் காண்பிப்பதாகும். XML என்பது மனிதர்களுக்கும் கணினிகளுக்கும் வசதியான படிவத்தில் தகவல்களைச் சேமித்து அனுப்புவது. இந்தத் தரவு எவ்வாறு காட்டப்பட வேண்டும் என்பதற்கான எந்தக் குறிப்பும் இந்த வடிவமைப்பில் இல்லை: அது அதைப் படிக்கும் நிரலின் குறியீட்டைப் பொறுத்தது. இரண்டாவதாக, ஒரு பெரிய தொழில்நுட்ப வேறுபாடு உள்ளது. HTML குறிச்சொற்கள் முன் வரையறுக்கப்பட்டவை. வேறு வார்த்தைகளில் கூறுவதானால், ஒரு HTML தலைப்பை உருவாக்குதல் (உதாரணமாக, பக்கத்தின் மேல் ஒரு பெரிய தலைப்பு) <h1></h1> மட்டுமே பயன்படுத்துகிறது குறிச்சொற்கள் (<h2> </h2> மற்றும் <h3></h3> சிறிய தலைப்புகளுக்குப் பயன்படுத்தப்படுகின்றன). பிற குறிச்சொற்களைப் பயன்படுத்தி HTML தலைப்புகளை உருவாக்க முடியாது. எக்ஸ்எம்எல் முன் வரையறுக்கப்பட்ட குறிச்சொற்களைப் பயன்படுத்தாது. நீங்கள் விரும்பும் எந்தப் பெயரையும் குறிச்சொற்களுக்கு வழங்கலாம்: <header>, <title>, <idontknow2121>.
சச்சரவுக்கான தீர்வு
எக்ஸ்எம்எல் வழங்கும் சுதந்திரம் சில சிக்கல்களுக்கு வழிவகுக்கும். எடுத்துக்காட்டாக, ஒரே நிறுவனத்தை (உதாரணமாக, ஒரு கார்) ஒரு நிரல் வெவ்வேறு நோக்கங்களுக்காகப் பயன்படுத்தலாம். எடுத்துக்காட்டாக, கார்களை விவரிக்கும் எக்ஸ்எம்எல் கோப்பு எங்களிடம் உள்ளது. இருப்பினும், எங்கள் புரோகிராமர்கள் தங்களுக்குள் முன் உடன்பாட்டை எட்டவில்லை. இப்போது, உண்மையான கார்கள் பற்றிய தரவுகளுடன் கூடுதலாக, எங்கள் XML இல் பொம்மை கார்கள் பற்றிய தரவைக் காணலாம்! மேலும், அவை ஒரே பண்புகளைக் கொண்டுள்ளன. அத்தகைய XML கோப்பில் எங்கள் நிரல் படிக்கிறது என்று வைத்துக்கொள்வோம். பொம்மை காரில் இருந்து உண்மையான காரை எவ்வாறு வேறுபடுத்துவது?
இங்கே முன்னொட்டுகள் மற்றும் பெயர்வெளி நமக்கு உதவும். எங்கள் திட்டத்தில் உள்ள பொம்மை கார்களை உண்மையானவற்றிலிருந்து வேறுபடுத்துவதற்காக (உண்மையில் எந்த பொம்மைகளும் அவற்றின் உண்மையான சகாக்களிலிருந்து), நாங்கள் இரண்டு முன்னொட்டுகளை அறிமுகப்படுத்துகிறோம்: "உண்மையான" மற்றும் "பொம்மை".
இப்போது எங்கள் நிரல் வெவ்வேறு நிறுவனங்களை வேறுபடுத்தி அறிய முடியும்! பொம்மை முன்னொட்டு உள்ள அனைத்தும் பொம்மைகளாகக் கருதப்படும் :) இருப்பினும், நாங்கள் இன்னும் முடிக்கவில்லை. முன்னொட்டுகளைப் பயன்படுத்த, அவை ஒவ்வொன்றையும் ஒரு பெயர்வெளியாகப் பதிவு செய்ய வேண்டும். உண்மையில், "பதிவு" என்பது ஒரு வலுவான சொல் :) அவை ஒவ்வொன்றிற்கும் ஒரு தனித்துவமான பெயரை நாம் கொண்டு வர வேண்டும். இது வகுப்புகளைப் போன்றது: ஒரு வகுப்பில் ஒரு குறுகிய பெயர் ( பூனை ) மற்றும் அனைத்து தொகுப்புகளையும் உள்ளடக்கிய முழு தகுதியான பெயர் ( zoo.animals.Cat) URI பொதுவாக ஒரு தனிப்பட்ட பெயர்வெளி பெயரை உருவாக்க பயன்படுகிறது. சில நேரங்களில் இது இணைய முகவரியைப் பயன்படுத்தி செய்யப்படுகிறது, இந்த பெயர்வெளியின் செயல்பாடுகள் விவரிக்கப்பட்டுள்ளன. ஆனால் அது சரியான இணைய முகவரியாக இருக்க வேண்டியதில்லை. பெரும்பாலும், ப்ராஜெக்ட்கள் பெயர்வெளி படிநிலையைக் கண்காணிக்க உதவும் URI போன்ற சரங்களைப் பயன்படுத்துகின்றன. இங்கே ஒரு உதாரணம்:
நிச்சயமாக, "http://testproject.developersgroup1.companyname/department2/namespaces/real" இல் எந்த வலைத்தளமும் இல்லை ஆனால் இந்த சரத்தில் பயனுள்ள தகவல்கள் உள்ளன: டிபார்ட்மென்ட் 2 இல் உள்ள குழு 1 இன் டெவலப்பர்கள் "உண்மையான" பெயர்வெளியை உருவாக்குவதற்கு பொறுப்பாவார்கள். . நாங்கள் புதிய பெயர்களை அறிமுகப்படுத்த வேண்டும் அல்லது சாத்தியமான முரண்பாடுகளைப் பற்றி விவாதிக்க வேண்டும் என்றால், எங்கு திரும்புவது என்பது எங்களுக்குத் தெரியும். சில சமயங்களில் டெவலப்பர்கள் உண்மையான விளக்கமான இணைய முகவரியை ஒரு தனிப்பட்ட பெயர்வெளி பெயராகப் பயன்படுத்துகின்றனர். எடுத்துக்காட்டாக, உலகெங்கிலும் உள்ள மில்லியன் கணக்கான மக்களால் பயன்படுத்தப்படும் ஒரு பெரிய நிறுவனத்திற்கு இது இருக்கலாம். ஆனால் இது நிச்சயமாக எப்போதும் செய்யப்படுவதில்லை: ஸ்டாக் ஓவர்ஃப்ளோ இந்த சிக்கலில் ஒரு விவாதம் உள்ளது. பொதுவாக, URI களை பெயர்வெளிப் பெயர்களாகப் பயன்படுத்த கடுமையான தேவை இல்லை: நீங்கள் சீரற்ற சரங்களையும் பயன்படுத்தலாம். இந்த விருப்பமும் வேலை செய்யும்:
xmlns:real="nvjneasiognipni4435t9i4gpojrmeg"
URI ஐப் பயன்படுத்துவதால் பல நன்மைகள் உள்ளன. இதைப் பற்றி இங்கே மேலும் படிக்கலாம் .
அடிப்படை எக்ஸ்எம்எல் தரநிலைகள்
எக்ஸ்எம்எல் தரநிலைகள் என்பது எக்ஸ்எம்எல் கோப்புகளுக்கு கூடுதல் செயல்பாட்டைச் சேர்க்கும் நீட்டிப்புகளின் தொகுப்பாகும். எக்ஸ்எம்எல் நிறைய தரநிலைகளைக் கொண்டுள்ளது, ஆனால் நாங்கள் மிக முக்கியமானவற்றைப் பார்த்து, அவை அஜாக்ஸை சாத்தியமாக்குகின்றன என்பதைக் கண்டுபிடிப்போம், இது மிகவும் பிரபலமான எக்ஸ்எம்எல் தரநிலைகளில் ஒன்றாகும். வலைப்பக்கத்தை மீண்டும் ஏற்றாமலேயே அதன் உள்ளடக்கங்களை மாற்ற இது உங்களை அனுமதிக்கிறது! XSLT ஆனது XML உரையை மற்ற வடிவங்களுக்கு மாற்ற உங்களை அனுமதிக்கிறது. எடுத்துக்காட்டாக, XML ஐ HTML ஆக மாற்ற XSLT ஐப் பயன்படுத்தலாம்! நாங்கள் கூறியது போல், எக்ஸ்எம்எல்லின் நோக்கம் தரவை விவரிப்பது, அதைக் காண்பிப்பது அல்ல. ஆனால் XSLT மூலம் இந்த வரம்பைச் சுற்றி வரலாம்! XML கோப்பிலிருந்து தனிப்பட்ட கூறுகளை மீட்டெடுக்க, மாற்ற, சேர்க்க அல்லது நீக்க XML DOM உங்களை அனுமதிக்கிறது. இது எவ்வாறு செயல்படுகிறது என்பதற்கான சிறிய உதாரணம் இங்கே. எங்களிடம் Book.xml கோப்பு உள்ளது:
இதில் இரண்டு புத்தகங்கள் உள்ளன. புத்தகங்களில் <title> உறுப்பு உள்ளது. எங்கள் XML கோப்பிலிருந்து அனைத்து புத்தகத் தலைப்புகளையும் பெறுவதற்கு இங்கு JavaScript ஐப் பயன்படுத்தலாம் மற்றும் கன்சோலில் முதல் ஒன்றை அச்சிடலாம்:
<!DOCTYPE html>
<html>
<body>
<p id="demo"></p>
<script>
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
myFunction(this);
}
};
xhttp.open("GET", "books.xml", true);
xhttp.send();
function myFunction(xml) {
var xmlDoc = xml.responseXML;
document.getElementById("demo").innerHTML =
xmlDoc.getElementsByTagName("title")[0].childNodes[0].nodeValue;
}
</script>
</body>
</html>
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>The Lord of The Rings</title>
<author>John R.R. Tolkien</author>
<year>1954</year>
</book>
<book> க்கான செல்லுபடியாகும் பண்புக்கூறுகளின் பட்டியலை இங்கு வரையறுத்துள்ளோம். அங்கு ஒரு புதிய உறுப்பைச் சேர்க்க முயற்சிக்கவும், நீங்கள் உடனடியாக ஒரு பிழையைப் பெறுவீர்கள்!
<book>
<title>The Lord of The Rings</title>
<author>John R.R. Tolkien</author>
<year>1954</year>
<mainhero>Frodo Baggins</mainhero>
</book>
பிழை! "Element mainhero இங்கு அனுமதிக்கப்படவில்லை" இன்னும் பல XML தரநிலைகள் உள்ளன. அவை ஒவ்வொன்றையும் நீங்கள் நன்கு அறிந்திருக்கலாம் மற்றும் குறியீட்டை ஆழமாக தோண்டி எடுக்க முயற்சி செய்யலாம். எப்படியிருந்தாலும், உங்களுக்கு எக்ஸ்எம்எல் பற்றிய தகவல் தேவைப்பட்டால், நீங்கள் கிட்டத்தட்ட எல்லாவற்றையும் அங்கே காணலாம் :) இத்துடன், எங்கள் பாடம் முடிவுக்கு வருகிறது. பணிகளுக்குத் திரும்புவதற்கான நேரம் இது! :) அடுத்த முறை வரை!
GO TO FULL VERSION