PDA

View Full Version : آموزش XML : قسمت اول


ali_rezaei76
2007-11-16, 03:50 PM
آموزش XML :

XML برای شرح و بیان اطلاعات طراحی شده است.
• HTML برای نمایش اطلاعات و برای تمركز روی چگونگی دیده شدن اطلاعات طراحی شده است.

قبل از ادامه این بحث، شما باید مقداری درك پایه ای از موارد زیر داشته باشید:
• WWW,HTML و اساس ساخت صفحات وب
• زبانهای اسكریپت وب مانند JavaScript , VBScript

XMLچیست؟

• XML برگرفته شده از كلمات Extensible Markup Language است.
• XML یك Markup Language مانند HTML است.
• tag (برچسب) های XML از قبل تعریف شده نیستند، شما خودتان باید آنها را تعریف كنید.
• XML از یك (Document Type Definition) DTD برای شرح اطلاعات استفاده میكند.
• XML با یك DTD طراحی میشود تا خود-توصیف باشد.

تفاوت اصلی بین XML و HTML
• XML برای حمل اطلاعات طراحی شده است.
• XML یك جایگزین برای HTML نیست.
• XML و HTML برای هدفهای مختلفی طراحی شده اند.
• HTML برای نمایش اطلاعات و XML برای شرح و حمل و نقل اطلاعات است.

XML كاری انجام نمیدهد!
شاید این موضوع برای درك كردن كمی مشكل باشد، اما XML كاری انجام نمیدهد. XML ساخته نشده تا كاری انجام دهد. XML به عنوان یك راه برای سازماندهی كردن، ذخیره كردن و فرستادن اطلاعات ساخته شده است. مثال زیر یك یادداشت از Jani به Tove است كه در ساختار XML ذخیره شده است:

note.xml - ۱ مثال



Tove
Jani
Reminder
Dont forget me this weekend!


یادداشت یك سرباره (header) و یك بدنه اصلی پیغام دارد، همچنین اطلاعات فرستنده و گیرنده را هم در بر دارد. اما هنوز این سند XML كاری انجام نمیدهد. آن فقط اطلاعات محضی است كه در برچسبهای XML قرار گرفته است.

XML آزاد و قابل گسترش
• برچسبهای XML از قبل تعریف شده نیستند، شما باید برچسبها را خودتان درست كنید.
• برچسبهایی كه در HTML بكار میروند از پیش تعریف شده هستند و مؤلف سندهای HTML فقط میتواند از برچسبهای تعریف شده در HTML استاندارد استفاده كند ( مانند
و).
• XML به مؤلف اجازه میدهد تا برچسبهای خود و ساختار آنها را تعریف كند.
• برچسبهای مثال بالا ( مانند و) در XML استاندارد تعریف شده نیستند، این برچسبها توسط مؤلف سند XML تعریف شده اند.

XML یك مكمل برای HTML
• XML یك جایگزین برای HTML نیست.
• درك اینكه XML یك جایگزین برای HTML نیست خیلی مهم است.
• در آینده گسترش وب احتمال داده میشود كه XML برای شرح اطلاعات به كار خواهد رفت،درحالیکه كه HTML برای فرمت و نمایش اطلاعات به كار خواهد رفت.
• شاید این بهترین تعریف از XML باشد: ابزاری مستقل از سخت افزار و نرم افزار برای انتقال اطلاعات است.

XML میتواند اطلاعات را از HTML جدا كند
• با XML اطلاعات شما در خارج از HTML ذخیره میشود.
• هنگامی كه HTML برای نمایش اطلاعات استفاده میشود، اطلاعات در درون HTML ذخیره شده است. با XML اطلاعات میتواند در فایلهای جدای XML ذخیره شود. در این روش شما میتوانید HTML را به عنوان لایه ای روی اطلاعات و برای نمایش آنها فرض كنید و مطمئن باشید كه تغییر در اطلاعات لایه های زیرین احتیاج به تغییر HTML شما نخواهد داشت.

برای داد و ستد اطلاعات
با XML اطلاعات میتواند بین سیستم های ناسازگار داد و ستد شود.
در دنیای واقعی، سیستم های كامپیوتری و بانك های اطلاعاتی شامل اطلاعات در فرمت های ناسازگار هستند. یكی از وقت گیرترین چالش ها برای گسترش دهندگان، انتقال اطلاعات بین چنین سیستمهایی شده است.

XML و B2B
با استفاده از XML اطلاعات تجاری می تواند روی اینترنت داد و ستد شود. در آینده ای نزدیك باید منتظر شندن خبرهای بیشتری از XML و B2B(Business to Business) باشیم.
XML می رود تا زبان اصلی برای داد و ستد اطلاعات اقتصادی بین تجارت ها، روی اینترنت بشود. امروزه تعداد زیادی از برنامه های B2B در حال گسترش است.

XML برای توزیع اطلاعات
با XML ، فایل های متنی می توانند برای توزیع اطلاعات استفاده گردند (در اینجا منظور از توزیع، انتقال و پخش اطلاعات از یك نوع سیستم به سیستمهای نوع دیگر است).
زمانی كه اطلاعات در فایل های متنی ذخیره شود، XML یك روش مستقل از سخت افزار و نرم افزار برای انتقال و توزیع اطلاعات فراهم می كند.
این روش باعث میشود كه ایحاد و ساخت اطلاعاتی كه برنامه های كاربردی مختلف بتوانند با آن كار كنند بسیار آسان بشود. همچنین توسعه و ارتقاء یك سیستم به سیستم عامل، سرور، برنامه كاربردی و جستجوگرهای جدید را نیز آسانتر مینماید.

XML برای ذخیره اطلاعات
با XML فایل های متنی میتوانند برای ذخیره اطلاعات استفاده بشوند.
XML همچنین میتواند برای ذخیره اطلاعات در فایلها و بانك های اطلاعاتی مورد استفاده قرارگیرد. برنامه هایی میتواند نوشته شوند كه اطلاعات را در منابع ذخیره و فراخوانی كنند و برنامه های اصلی میتوانند برای نمایش اطلاعات استفاده شود.

XML میتواند اطلاعات شما را مفیدتر كند
XML اطلاعات شما را برای كاربرهای بیشتری قابل دسترس میكند.
به دلیل مستقل بودن XML از سخت افزار و نرم افزار و برنامه، شما میتوانید اطلاعات خود را برای برنامه هایی غیر از جستجوگرهای HTML هم قابل دسترس نمایید.
به این ترتیب اطلاعات شما در همه انواع برنامه های كاربردی دیگر قابل استفاده است، برای مثال یك برنامه كاربردی میتواند اطلاعات شما را كه در یك بانك اطلاعاتی ذخیره شده است برای نابینایان به خروجی مخصوص خود انتقال دهد.

XML و زبان های جدید
XML مادر WAP و WML است. WML كه برای دستگاه های دستی مانند موبایل ها به منظور ارتباط با اینترنت مورد استفاده قرار میگیرد، در XML نوشه شده است.



بخش اول :


XML چیست ؟

یکی از ابزاری است که این مدته به شدت وارد بورس شده و حیفه، که من حرفی از این مبحث مطرح نکنم.
XML یک سیستم ذخیره اطلاعات است که میتوان در زمینه های مختلف تعمیمش داد. حال من آموزش گوشه های از XML رو میخوام با یک مثال شروع کنم. شما فقط سعی کنید مکانیزم کاری و کاربرد XML رو درک کنید. درک مطالب و مباحث کمکه زیادی به شما در برنامه نویسی میکنه پس مثال زیر رو با دقت بخونید، اگه گوشه های از کد رو متوجه نشدید مهم نیست چون در درس های بعدی این Object ها و باقیه Object های مربوط به XML رو آموزش میدم.

من یک فایل در آدرس "C:\Data1.XML" دارم با محتوای زیر:

AraSoft
18
Male


حال لازمه که این اطلاعات که شامل اسم ، سن ، جنسیت من هست در برنامه استفاده کنیم.پس ابتدا Namespace مورد نظر " System.Xml " رو به برنامه اضافه کرده و Imports System.Xml ... استاد میکنید.
و در قسمت مورد نظر کد مربوط رو مینویسیم:

Dim Reader as XMLNodeReader
Dim DC as New XMLDocument
Dim NickName, Sex as String
Dim Age as Long

DC.load ("C:\Data1.Xml")
Reader = New XMLNodeReader (DC)
Do until Reader.EOF
Reader.Read
Select Case Reader.LocalName
Case "Name"
If Reader.IsStartElement then
Reader.MoveToElement
If Not Reader.Value.Trim = Nothing then
MSGbox (Reader.Value)
End IF
End If
Case "Age"
If Reader.IsStartElement then
Reader.MoveToElement
If Not Reader.Value.Trim = Nothing then
MSGbox (Reader.Value)
End IF
End If
Case "Sex"
If Reader.IsStartElement then
Reader.MoveToElement
If Not Reader.Value.Trim = Nothing then
MSGbox (Reader.Value)
End IF
End If
End Select
Loop

خوب ما یک XML داریم و یک کد که از این اطلاعات استفاده میکنه.شما کافیست از کد به این برسید که XML در چه حیطه ای است و کجا بدرد میخورد، به راحتی میتوانید تمام مباحث XML را به راحتی یاد بگیرید.

ali_rezaei76
2007-11-16, 03:56 PM
آشنایی با XML قسمت دوم


اکثر افرادی که قصد یادگیری XML رو دارند، نمی تونند XML رو خوب بفهمند. شما سعی کنید XML رو یک سیستم ذخیره اطلاعات بدونید.بعدا با یادگیری قسمتهای بعدی XML با کاربردهای XML آشنا میشید و راحتتر میتونید به صورت حرفه ای از اون استفاده کنید.البته این یادآوری کنم که من فقط قصد آشنا سازی شما با XML رو دارم نه آموزش کامل XML.
XML برای خود یک دستوره نگارشی و املایی دارد. شما در حین یادگیری عبارتهای XML با اون آشنا میشید.
تگها:
شما با عبارتهای HTML یا همان TAG ها آشنا هستید در XML از همان تگها استفاده میشود ولی نکته مهم اینجاست که XML به شدت به حروف کوچک و بزرگ حساسیت داره پس اگر شما تگ ابتدای خودتون رو به دین صورت نوشتید باید تگ پاییانی هم بدین صورت بنویسید .

اعلان شروع فایل XML:
فایل XML با یک اعلان شروع میشه که باید در اولین خط باشه (کاملا اختیاری):

حتما به بزرگی و کوچکی حروف دقت کنید. تگ اعلان XML به صورت .
نوشتن تگها:
تگها در حقیقت همان رکوردها هستند که فیلدهای متغییری میتوانند داشته باشند(البته اگر با Database آشنا باشید). شما اطلاعات خودتون رو با استفاده از تگها ذخیره میکنید مثلا برای ذخیره اسمتون: AraSoft
برای ذخیره اطلاعات شما به دو تگ نیاز دارید یکی آغازی و دیگری پایانی این دو در حقیقت تشکیل یک تگ صحیح را میدهند. یک تگ آغازی به صورت اول > و بعد اسم مورد نظر و سپس < نوشته میشود. تگ پایانی تنها یک تفاوت کوچک دارد که آن در آولین بخش تگ است. تگ پایانی به صورت


Begin:
End:


برای نوشتن تگها باید به این توجه کنید که اسم تگ شروع () و اسم تگ پایانی () نباید از نظر کوچکی و بزرگی فرق کند. و نکته مهم اینکه شما باید XML خود رو با یک تگ اصلی بپوشانید و بقیه تگها رو داخل اون قرار دهید مثل:

تداخل تگها:
اگر شما تگی رو شروع کردید و میخواهید تگی رو داخل اون قرار دهید شروع و پایان تگ باید در داخل تگ اصلی باشد مانند زیر:


درست:


:غلط

ß-----Error

تگ پوچ:
شاید در مرور Xml های که من نوشتم یه این تگ رسیده و تعجب کنید که چرا من قانون نوشتن تگها رو نقض کردم و لی در حقیقت این خود یک دستور نگارشی است مبنی بر اینکه اگر تگی هیچ مقداری رو در بر نمیگیرد بهتر است به صورت نوشته شود "شبیه به HTML" تا به راحتی برسی XML افزوده شود.
افزوردن ویژگی به تگ:
تگ ها قدرت داشتن ویژگی رو دارند (Attribute).



1.Home
2.Home

شما میتوانید برای مقدار هر تگ یک خاصیت یا ویژگی تعیین کنید. مثلا من در شماره 1 گفتم قسمت سایت=خانه و با زبان فارسی و در شماره 2 گفتم که قسمت سایت=خانه و به زبان انگلیسی.

آشنایی با XML قسمت سوم

یک حالت ساده از خواننده های فایلهای XML در .Net همین XMLTextReader است.
این راننده (Driver) فقط رو به جلو حرکت میکند وهرچی در سر راهش باشد در حافظه اش ذخیره میکند.و مهمترین قسمت اینکه از DTD و XMLSchema نیز پشتیبانی نمیکند.و این برای شروع کار ما که با این دو نوع آشنا نیستیم بسیار مناسب است.


Imports System.Xml

Dim Reader as XmlTextReader
Reader = New XmlTextReader("Data\Setting.Xml")'فایل مورد نظر
Do Until Reader.EOF'در صورت به اتمام رسیدن فایل حلقه متوقف میشود
Reader.Read()'خواندن تگ بعدی
MsgBox(">---")
MsgBox("Depth: " & Reader.Depth)
'مقدار فرو رفتگی یک تگ داخل تگهای بالای خودش
MsgBox("LocalName: " & Reader.LocalName)
'خواندن اسم تگ localName is Book
MsgBox("Attribute: " & Reader.ReadAttributeValue)
'مقدار خاصیت قرار داده شده
MsgBox("Value: " & Reader.Value)
'محتوای داخلی تگ
MsgBox("---<")
Loop


همینطور که میبینید بسیار ساده میشه از این Object استفاده کرد. شمامیتونید به راحتی فایل XML خود رو باز کرده و اون رو به ترتیب بخونید.

*همانطور که میبینید در قسمت خواصیت تگ اگر تگ خواصیتی رو نداشته باشه مقدار
برگشتی False میباشد.
*در قسمت Depth ؛ اگر تگی در داخل روت اصلی باشد مقدار 1 رو بر مگردونه و اگریک تگ در داخل این تگ باشه پس مقدار 2 رو بر میگردونه و اگر خود روت باشه
مسلماً مقدار صفر 0 را بر میگردونه.
*شما میتوانید با استفاده از LocalName یک فیلتر قرار دهید که هر LocalName که مقداری در بر نگیرد نمایش ندهد.

البته من فقط این Reader ها رو معرفی میکنم و اگر نکته مهمی وجود داشته باشد گفته میشود.پس اگر در این زمینه مشکلی بوجود اومد میتونید اونو مطرح کنید چون این مبحث خیلی وسیع هست و نمیشه به این راحتی با اون کنار اومد.

آشنایی با XML قسمت چهارم
در این قسمت به تعریف یک نوع دیگر از خواننده های XML میپردازیم که من بیشتر از این نوع استفاده میکنم بجز موارد خواص. البته این مبحث زیاد جای بحث نداره به همین دلیل بسیار مختصر به شرح اون میپردازم.

XMLNodeReader
همین طور که از اسمش معلومه برای برسی XML بر اساس گره ها (Node) طراحی شده. این Reader از DTD و XML Schema پشتیبانی نمیکند ولی تعریف های داخل DTD رو میشناسه.

خوب طبق معمول با یک مثال این Reader رو تعریف میکنیم.که من فکر میکنم هیچ آموزشی نمیتونه مانند مثال به یک نفر کمک کنه پس ما هم... :


Imports System.Xml

Dim Reader As XMLNodeReader
Dim DOC As New XmlDocument
DOC.Load("\Data\Setting.Xml")
Reader = New XMLNodeReader(DOC)
Do Until Reader.EOF
Reader.Read()
MsgBox("---")
MsgBox("Depth: " & Reader.Depth)
MsgBox("LocalName: " & Reader.LocalName)
MsgBox("Attribute: " & Reader.ReadAttributeValue)
MsgBox("Value: " & Reader.Value)
MsgBox("---")
Loop

همینطور که میبینید این Reader هم بسیار شبیه Reader قبلی است. ولی در Open کردن فایل کمی تفاوت دارد. مهمترین قسمت این قسمت طریقه بازشدن فایل بوسیله XMLNodeReader است چون بقیه قسمتهای NodeReader و TextReader فرق چندانی با هم ندارد. ولی یک Object اضافه بر سازمان در این قسمت برای باز کردن فایل استفاده کردم. این Object بسیار قدرتمند است و در آینده حتما بر روی اون بحث خواهم کرد. من به شما سفارش میکنم اگر از XML به صورت ابتدایی استفاده میکنید از همین Reader استفاده کنید چون بسیار سریع تر و دقیقتر ( نه از نظر من حتی از نظر Microsoft) از TextReader است. من برای مطرح کردن بقیه مسایل در XML باید به آموزش کوتاهی درباره DTD بپردازم پس تا یادداشت بعد.

امیدوارم این مقاله آموزشی برای شما دوستان مفید واقع شود .