আসুন Σ একটি খালি খালি, সীমাবদ্ধ চিহ্নগুলির সেট হোক, যাকে বর্ণমালা বলা হয় । তারপরে Σ * সীমাবদ্ধ শব্দের গণনাযোগ্য অসীম সেট যা zero থেকে শূন্য বা আরও বেশি চিহ্নের সমন্বয়ে গঠিত হতে পারে Σ যে কোনও ভাল সংজ্ঞায়িত সাবসেট এল ⊆ Σ * একটি ভাষা ।
XML এ এটি প্রয়োগ করুন। এর বর্ণমালাটি ইউনিকোড অক্ষর সেট ইউ , যা খালি নয় এবং সীমাবদ্ধ। শূন্য বা তার বেশি ইউনিকোড অক্ষরের প্রতিটি সংক্ষেপণ একটি সুগঠিত এক্সএমএল নথি নয়, উদাহরণস্বরূপ, স্ট্রিং
<tag> soup &; not <//good>
স্পষ্টভাবে না। এক্সএমএল ⊂ U * উপসেটটি যা সুগঠিত এক্সএমএল ডকুমেন্টগুলি তৈরি করে তা নির্ধারণযোগ্য (বা "পুনরাবৃত্ত") is একটা মেশিন (আলগোরিদিম বা কম্পিউটার প্রোগ্রাম) যে ইনপুট হিসাবে কোন শব্দ লাগে বিদ্যমান W ∈ ইউ * আর যদি সময়, আউটপুট একটি নির্দিষ্ট পরিমাণ পারেন 1 পর W ∈ এক্সএমএল এবং 0 অন্যথায়। এই জাতীয় অ্যালগরিদম কোনও এক্সএমএল প্রসেসিং সফ্টওয়্যার এর একটি উপ-রুটিন। সমস্ত ভাষা নির্ধারণযোগ্য নয়। উদাহরণস্বরূপ, বৈধ সি প্রোগ্রামগুলির সেট যা একটি সীমাবদ্ধ সময়ের মধ্যে শেষ হয়, এটি নয় (এটি থামানো সমস্যা হিসাবে পরিচিত)। যখন কেউ একটি নতুন ভাষা ডিজাইন করেন, তখন একটি গুরুত্বপূর্ণ সিদ্ধান্তটি হ'ল এটি যতটা সম্ভব শক্তিশালী হওয়া উচিত বা সিদ্ধান্তের পক্ষে রায় দেওয়ার চেয়ে আরও ভালভাবে সীমাবদ্ধ থাকবে কিনা।
কিছু ভাষা ব্যাকরণের মাধ্যমে সংজ্ঞায়িত করা যেতে পারে যা ভাষা উত্পাদন করে বলে। একটি ব্যাকরণ গঠিত
- আক্ষরিক একটি সীমাবদ্ধ সেট ( টার্মিনাল প্রতীকও বলা হয় ),
- ব্যাকরণের ভেরিয়েবলগুলির একটি বিচ্ছিন্ন সীমাবদ্ধ সেট ( অ-টার্মিনাল প্রতীকও বলা হয়),
- ভেরিয়েবল এবং এর সেট থেকে নেওয়া একটি বিশিষ্ট প্রারম্ভিক প্রতীক
- নিয়মের একটি সীমাবদ্ধ সেট (তথাকথিত প্রযোজনা ) যা নির্দিষ্ট ধরণের প্রতিস্থাপনের অনুমতি দেয়।
যে কোনও শব্দ যা কেবলমাত্র আক্ষরিক অর্থে থাকে এবং এটি সূচনা চিহ্ন দিয়ে শুরু করে এবং পরে প্রদত্ত নিয়মগুলি প্রয়োগ করে ব্যাকরণ দ্বারা উত্পাদিত ভাষার অন্তর্ভুক্ত।
উদাহরণস্বরূপ, নিম্নলিখিত ব্যাকরণ (পরিবর্তে অনানুষ্ঠানিক স্বরলিপি) আপনাকে দশমিক স্বরলিপিতে একেবারে পূর্ণসংখ্যা পেতে দেয়।
- ব্যাকরণ লিটারেল ডিজিটের হয়
1
, 2
, 3
, 4
, 5
, 6
, 7
, 8
, 9
, এবং 0
।
- ভেরিয়েবলগুলি S এবং D এর প্রতীক ।
- এস সূচনা প্রতীক।
- ভেরিয়েবল এস এর যে কোনও ঘটনা প্রতিস্থাপন করা যেতে পারে
- আক্ষরিক
0
বা
0
ভেরিয়েবল ডি অনুসরণ করে অন্য কোনও আক্ষরিক দ্বারা ।
- ভেরিয়েবল ডি এর যে কোনও ঘটনা প্রতিস্থাপন করা যেতে পারে
- আক্ষরিকের দ্বারা অনুসরণ করা হয় ভেরিয়েবল ডি বা এর অন্য একটি উদাহরণ
- খালি স্ট্রিং দ্বারা
এখানে আমরা কীভাবে উদ্ভূত 42
:
এস - (বিধি 4, 2 এনডি বৈকল্পিক প্রয়োগ করুন ) → 4
ডি - (নিয়ম 5, 1 ম প্রকারের প্রয়োগ করুন ) → 42
ডি - (নিয়ম 5, 2 এনডি বৈকল্পিক প্রয়োগ করুন ) → 42
।
আপনার ব্যাকরণে আপনি কীভাবে বিস্তৃত বিধিগুলি মঞ্জুর করেন তার উপর নির্ভর করে, প্রদত্ত শব্দটি ব্যাকরণ দ্বারা আসলে উত্পাদিত করা যায় তা প্রমাণ করার জন্য ভিন্নতর পরিশীলিত মেশিনগুলির প্রয়োজন। উপরের উদাহরণটি একটি নিয়মিত ব্যাকরণ যা সবচেয়ে সহজ এবং সর্বনিম্ন শক্তিশালী is ব্যাকরণ পরবর্তী শক্তিশালী বর্গ বলা হয় প্রেক্ষাপটে মুক্ত । এই ব্যাকরণগুলি যাচাই করার জন্যও খুব সহজ। এক্সএমএল (যদি আমি কিছু অস্পষ্ট বৈশিষ্ট্য উপেক্ষা না করি তবে আমি অবগত নই) প্রসঙ্গ-মুক্ত ব্যাকরণ দ্বারা বর্ণনা করা যেতে পারে। ব্যাকরণের শ্রেণিবদ্ধকরণ ব্যাকরণগুলির (এবং তাই ভাষা) এর চমস্কি হায়ারার্কি গঠন করে । ব্যাকরণ দ্বারা বর্ণিত প্রতিটি ভাষা কমপক্ষে আধা-নির্ধারণযোগ্য(বা "পুনরাবৃত্তিমূলকভাবে গণনাযোগ্য") অর্থাৎ, এমন একটি মেশিন রয়েছে যা ভাষার সাথে প্রকৃতপক্ষে কোনও শব্দ দেয় যা একটি নির্দিষ্ট সময়ের মধ্যে ব্যাকরণ দ্বারা উত্পাদিত হতে পারে এবং তার প্রমাণ কখনই পাওয়া যায় না এবং কোনও ভুল প্রমাণ আউটপুটও করতে পারে না। এ জাতীয় যন্ত্রটিকে ভেরিফায়ার বলা হয় । মনে রাখবেন যে ভাষাটি আসলে ভাষার অন্তর্ভুক্ত নয় এমন কোনও শব্দ দেওয়ার পরে মেশিনটি কখনও থামতে পারে না। স্পষ্টতই, আমরা চাই যে আমাদের প্রোগ্রামিং ভাষাগুলি সীমাবদ্ধ সময়ের মধ্যে অবৈধ প্রোগ্রামগুলি প্রত্যাখ্যান করতে সক্ষম হওয়ার সুবিধার জন্য কম শক্তিশালী ব্যাকরণ দ্বারা বর্ণনা করা হোক।
স্কিমাটা এক্সএমএলের একটি সংযোজন যা সুগঠিত নথিগুলির সেটকে পরিশোধিত করতে দেয়। একটি সুনির্দিষ্ট দলিল যা একটি নির্দিষ্ট স্কিমা অনুসরণ করে সেই স্কিমা অনুযায়ী বৈধ বলা হয় । উদাহরণস্বরূপ, স্ট্রিং
<?xml version="1.0" encoding="utf-8" ?>
<root>all evil</root>
একটি সুগঠিত এক্সএমএল ডকুমেন্ট তবে কোনও বৈধ এক্সএইচটিএমএল নথি নয়। এক্সএইচটিএমএল , এসভিজি , এক্সএসএলটি এবং অন্য কিসের জন্য স্কিমাতা নেই। স্কিমা বৈধতা প্রতিটি ইনপুট জন্য সীমাবদ্ধ পদক্ষেপের পরে থামার গ্যারান্টিযুক্ত একটি অ্যালগরিদম দ্বারাও করা যেতে পারে। এই জাতীয় প্রোগ্রামকে বৈধকরণকারী বা বৈধকরণের পার্সার বলা হয়। স্কিমাতা তথাকথিত সিনমা সংজ্ঞা ভাষা দ্বারা সংজ্ঞায়িত করা হয় , যা ব্যাকরণকে আনুষ্ঠানিকভাবে সংজ্ঞায়নের একটি উপায়। XSD এক্সএমএল জন্য অফিসিয়াল স্কিমা-ডেফিনেশনের ভাষা XML- ভিত্তিক এবং হয়, নিজেই। রিলাক্স এনজি এক্সএসডি-র আরও মার্জিত, অনেক সহজ এবং কিছুটা কম শক্তিশালী বিকল্প।
আপনি নিজের স্কিমিটাকে সংজ্ঞায়িত করতে পারার কারণে, এক্সএমএলকে একটি এক্সটেনসিবল ভাষা বলা হয়, এটি "এক্সএমএল" এর "এক্স" এর উত্স।
আপনি নিয়মের একটি সেট সংজ্ঞায়িত করতে পারেন যা এক্সএমএল নথিগুলিকে কম্পিউটার প্রোগ্রামগুলির বিবরণ হিসাবে ব্যাখ্যা দেয়। XSLT, পূর্বে উল্লিখিত, এক্সএমএল দিয়ে নির্মিত এই জাতীয় প্রোগ্রামিং ভাষার উদাহরণ। আরও সাধারণভাবে, আপনি প্রায় কোনও প্রোগ্রামিং ভাষার অ্যাবস্ট্রাক্ট সিনট্যাক্স ট্রি সিএমএল করে দিতে পারেন বেশ প্রাকৃতিকভাবে এক্সএমএলে, যদি আপনি এটি চান তবেই।