ساختارهای اصلی XML - عناصر XML، برچسب ها، ویژگی ها، دستورالعمل های پردازش، بخش های CDATA، نظرات. عناصر XML عناصر XML خالی و غیر خالی

  • ترجمه
  • آموزش

تزریق‌های SQL، جعل درخواست‌های بین سایتی، XML خراب... چیزهای ترسناک و ترسناکی که همه ما دوست داریم از آنها محافظت کنیم، اما فقط می‌خواهیم بدانیم چرا این همه اتفاق می‌افتد. این مقاله مفهوم اساسی پشت آن را توضیح می دهد: رشته ها و مدیریت رشته ها در رشته ها.

مشکل اصلی فقط متن است. بله، فقط متن - مشکل اصلی همین است. تقریباً همه چیز در سیستم کامپیوتریبا متن نمایش داده می شود (که به نوبه خود با بایت نشان داده می شود). آیا ممکن است که برخی از متون برای رایانه در نظر گرفته شده باشد، در حالی که برخی دیگر برای افراد در نظر گرفته شده است. اما هر دوی آنها همچنان متن باقی می مانند. برای اینکه بفهمید در مورد چه چیزی صحبت می کنم، در اینجا یک مثال کوچک وجود دارد:
Homo Sapiens فرض کنید، متن انگلیسی وجود دارد که من نمی خواهم آن را به روسی ترجمه کنم
شما آن را باور نخواهید کرد: این متن است. برخی از مردم آن را XML می نامند، اما این فقط متن است. ممکن است برای نشان دادن به معلم مناسب نباشد. به انگلیسی، اما هنوز فقط یک متن است. می توانید روی پوستر چاپ کنید و با آن به میتینگ بروید، می توانید در نامه ای به مادرتان بنویسید ... متن است.

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

به عبارت دیگر، ما از قوانین خاصی در متن خود استفاده کردیم تا معنای خاصی را نشان دهیم که شخص دیگری با پیروی از همان قوانین می تواند از آن استفاده کند.
خوب، درک این موضوع چندان سخت نیست. اگر بخواهیم از این پرانتزهای خنده دار استفاده کنیم که معنای خاصی در متن ما دارند، اما بدون استفاده از این معنی؟.. چیزی شبیه به این:
انسان خردمند< n and y >
شخصیت های "" چیز خاصی نیستند. آنها می توانند به طور قانونی در هر مکان و در هر متنی مانند مثال بالا استفاده شوند. اما در مورد ایده ما از کلمات خاص، مانند؟ آیا این بدان معنی است که آن نیز نوعی کلمه کلیدی است؟ در XML - شاید بله. یا شاید نه. این مبهم است. از آنجایی که کامپیوترها در برخورد با ابهامات خیلی خوب نیستند، اگر ما خودمان i's را نقطه نزنیم و ابهامات را حل نکنیم، ممکن است نتیجه غیرمنتظره ای به همراه داشته باشد.
این معضل را می توان با جایگزینی نمادهای مبهم با چیزی غیر مبهم حل کرد.
ریاضی پایه هومو ساپینس به ما می گوید که اگر x< n and y >n، x نمی تواند بزرگتر از y باشد.
حال، متن باید کاملاً بدون ابهام شود. "".
تعریف فنی این است محافظ، از شخصیت های خاص زمانی فرار می کنیم که نمی خواهیم معنای خاص خود را داشته باشند.
فرار |iˈskāp| [بدون ابج. ] آزاد شدن [ با obj. ] متوجه نشدن / به یاد نیاوردن [...] [ با obj. ] IT: دلیلی برای تفسیر متفاوت [...]
اگر کاراکترها یا دنباله های خاصی از کاراکترها در یک متن معانی خاصی داشته باشند، پس باید قوانینی وجود داشته باشد که نحوه برخورد با موقعیت هایی را مشخص کند که در آن کاراکترها باید بدون استناد به معنای خاص آنها استفاده شوند. یا به عبارت دیگر فرار به این سوال پاسخ می دهد: "اگر این نمادها خیلی خاص هستند، چگونه می توانم از آنها در متن خود استفاده کنم؟".
همانطور که در مثال بالا می بینید، علامت (&) نیز یک کاراکتر خاص است. اما اگر بخواهیم بنویسیم چه می شود


اگر کاربران شما خوب و مهربان باشند، نقل قول هایی از فیلسوفان قدیمی ارسال می کنند و پیام ها چیزی شبیه به این خواهند بود:

ارسال شده توسط افلاطون در 2 ژانویه 15:31

گفته شده است که گفته ام "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.


اگر کاربران باهوش باشند، احتمالاً در مورد ریاضی صحبت خواهند کرد و پیام ها به این صورت خواهد بود:

ارسال شده توسط پاسکال در 23 نوامبر 04:12

ریاضیات پایه به ما می گوید که اگر x< n and y >n، x نمی تواند بزرگتر از y باشد.


هوم... بازم این هتک حرمت براکت های ما. خوب، از نقطه نظر فنی ممکن است مبهم باشند، اما مرورگر ما را برای آن می بخشد، درست است؟


باشه، بس کن، چه جهنمی؟ فلان شوخی تگ های جاوا اسکریپت را به انجمن شما معرفی کرده است؟ هر کسی که به این پیام در سایت شما نگاه می کند اکنون اسکریپت هایی را در زمینه سایت شما دانلود و اجرا می کند که می تواند چه کاری انجام دهد. و این خوب نیست.

به معنای واقعی کلمه در موارد بالا، ما می خواهیم به نوعی به DB یا مرورگر خود بگوییم که این فقط متن است، کاری با آن انجام ندهید! به عبارت دیگر، ما می خواهیم معانی خاص همه کاراکترهای خاص را "حذف" کنیم کلید واژه هااز هر گونه اطلاعات ارائه شده توسط کاربر، زیرا ما به او اعتماد نداریم. چه باید کرد؟

چی؟ چی میگی پسر اوه، شما می گویید، "سپر"؟ و کاملا حق با شماست، یک کوکی بردارید!
اگر قبل از ادغام داده های کاربر با کوئری، escape را اعمال کنیم، مشکل حل می شود. برای پرس و جوهای پایگاه داده ما چیزی شبیه به:
$name = $_POST["نام"]; $name = mysql_real_escape_string ($name); $query = "انتخاب شماره_تلفن از کاربران WHERE name = "$name""; $result = mysql_query ($query);
فقط یک خط کد، اما اکنون دیگر هیچکس نمی تواند پایگاه داده ما را "هک" کند. بیایید دوباره ببینیم که پرس‌وجوهای SQL بسته به ورودی کاربر، چگونه به نظر می‌رسند:
الکس
انتخاب شماره تلفن از کاربران WHERE name = "Alex"
مک دونالد
شماره_تلفن را از کاربران انتخاب کنید WHERE name = "Mc\"Donalds"
جو"؛ کاربران جدول DROP؛ --
SELECT phone_number از کاربران WHERE name = "Joe\"; کاربران DROP TABLE. --"
mysql_real_escape_string بی رویه یک اسلش رو به جلو در مقابل هر چیزی که ممکن است معنای خاصی داشته باشد قرار می دهد.


ما تابع htmlspecialchars را قبل از خروجی بر روی تمام داده های کاربر اعمال می کنیم. حالا پیام آفت به این صورت است:

ارسال شده توسط JackTR در 18 جولای، 12:56


توجه داشته باشید که مقادیر دریافت شده از کاربران در واقع "فاسد" نیستند. هر مرورگری این را به‌عنوان HTML تجزیه می‌کند و همه چیز را روی صفحه به شکل صحیح نمایش می‌دهد.

که ما را به... همه موارد بالا نشان می‌دهد که یک مشکل مشترک در بسیاری از سیستم‌ها وجود دارد: متن در متن اگر قرار نیست کاراکترهای خاصی داشته باشد باید حذف شود. با قرار دادن مقادیر متندر SQL، آنها باید طبق قوانین SQL فرار کنند. هنگام قرار دادن مقادیر متن در HTML، باید طبق قوانین HTML از آنها فرار کرد. هنگام قرار دادن مقادیر متن در (نام فناوری)، باید طبق قوانین (نام فناوری) از آنها فرار کرد. این همه است. برای کامل‌تر شدن، البته راه‌های دیگری برای برخورد با ورودی کاربر وجود دارد که ممکن است حاوی کاراکترهای خاص باشد یا نباشد:
  • اعتبار سنجی
    می توانید بررسی کنید که آیا ورودی کاربر با برخی از مشخصات داده شده مطابقت دارد یا خیر. اگر نیاز به وارد کردن شماره دارید و کاربر چیز دیگری را وارد می کند، برنامه باید به کاربر اطلاع داده و ورودی را لغو کند. اگر همه اینها به درستی سازماندهی شده باشد، پس هیچ خطری برای گرفتن "کاربران جدول DROP" جایی که کاربر قرار بود "42" را وارد کند وجود ندارد. این برای اجتناب از تزریق HTML/SQL چندان کاربردی نیست، زیرا... اغلب لازم است متنی با فرمت آزاد را بپذیرید که ممکن است حاوی ترفندهایی باشد. به طور معمول، اعتبار سنجی علاوه بر سایر معیارها استفاده می شود.
  • پاکسازی
    همچنین می‌توانید «بی سر و صدا» هر نمادی را که خطرناک می‌دانید حذف کنید. به عنوان مثال، به سادگی هر چیزی که شبیه یک تگ HTML است را حذف کنید تا از اضافه شدن به انجمن خود جلوگیری کنید. مشکل این است که می توانید بخش های کاملا قانونی متن را حذف کنید.
    دستورات SQL آماده شده است
    توابع ویژه ای وجود دارد که آنچه را که ما می خواستیم انجام می دهند: باعث می شود پایگاه داده تفاوت های بین خود پرس و جوی SQL و اطلاعات ارائه شده توسط کاربران را درک کند. در PHP آنها چیزی شبیه به این هستند:
    $stmt = $pdo->prepare("انتخاب شماره_تلفن از کاربران WHERE name = ?"); $stmt->execute($_POST["name"]);
    در این حالت، ارسال در دو مرحله انجام می شود که به وضوح بین درخواست و متغیرها تمایز قائل می شود. پایگاه داده این توانایی را دارد که ابتدا ساختار درخواست را درک کرده و سپس آن را با مقادیر پر کند.

  • در دنیای واقعی، همه اینها با هم برای سطوح مختلف حفاظت استفاده می شوند. همیشه باید از اعتبارسنجی استفاده کنید تا مطمئن شوید که کاربر داده های صحیح را وارد می کند. سپس می توانید (اما لازم نیست) داده های وارد شده را اسکن کنید. اگر کاربر به وضوح سعی دارد اسکریپت را به شما بفروشد، می توانید به سادگی آن را حذف کنید. سپس، همیشه، همیشه باید از داده های کاربر قبل از قرار دادن آن در یک پرس و جوی SQL فرار کنید (همین مورد برای HTML نیز صدق می کند).

برای مدت طولانی، استاندارد برای درج علامت های نقل قول منظم در آن تجویز می کند متن HTMLاز ساختار "برای برچسب های داخلی، علامت نقل قول" برای نشان دادن ویژگی ها استفاده می شود.

با این حال، من هنوز به مرورگری برخورد نکرده‌ام که علامت ساده «خارج از هر تگ» را به عنوان علامت نقل قول نشان ندهد. پس همکاران عزیز به من بگویید شاید استفاده از «برچسب‌های بیرونی صرفاً خسته‌کننده‌ای است که کسی به آن نیاز ندارد؟» آیا می توانید با آرامش و بدون تعارف بنویسید؟ به خصوص در متن هایی که گیومه های زیادی وجود دارد و رعایت قوانین سختگیرانه طراحی (در خصوص استفاده صحیح از گیومه های ملی) بی ربط است.

IMHO، بسیاری از مردم این کار را انجام می دهند ... اما سوال کاملاً روشن نیست: اگر می دانید که طبق استانداردها باید نقل قول ها را به صورت "" بنویسید، اما تنبل است، با وجود این واقعیت که بسیاری از سایت ها اینطور کار می کنند، پس چه آیا انتظار دارید بشنوید؟ فکر می کنم در مورد آن است، هیچ کس نمی داند که آیا نمایش نقل قول ها در نسخه های جدید مرورگرها پشتیبانی می شود یا خیر، بنابراین به احتمال زیاد می توانیم یک توصیه واضح ارائه دهیم: اگر در آینده نمی خواهید مشکلی ایجاد شود، 100٪ - به استانداردها پایبند باشید :) اما شما قبلاً این را می دانید یا منتظر تأیید هستید: بله ، خسته کننده است همین ، فراموش کنید و تا 10 سال دیگر همه چیز همانگونه خواهد بود ، من (مایکروسافت ، موزیلا و غیره. ) ضمانت؟

لین "مرد قهوه" [پرونده]
بله، اتفاقا... اکنون خواندن آن مفید است، در هیچ کجا گفته نشده است که علامت نقل قول باید به شکل نمایش داده شود "
http://www2.stack.ru/~julia/HTML401/charset.html:

برخی از نویسندگان از یک مرجع موجودیت کاراکتر """ برای رمزگذاری نمونه هایی از گیومه های دوتایی (") استفاده می کنند، زیرا این کاراکتر می تواند برای جداسازی مقادیر ویژگی استفاده شود.

در مورد این واقعیت که شما باید از نهادی که فقط در مورد و & می گوید استفاده کنید:

اگر نویسنده بخواهد کاراکتر "" (کد اعشاری اسکی 62) را در متن قرار دهد.

برای جلوگیری از سردرگمی با ارجاعات کاراکتر (علامت شروع یک مرجع کاراکتر)، باید از مرجع "&" (کد اعشاری ASCII 38) به جای کاراکتر "&" استفاده شود. علاوه بر این، مرجع "&" نیز باید در مقادیر ویژگی استفاده شود، زیرا ارجاعات کاراکتر در مقادیر ویژگی CDATA مجاز است.

اما من فقط انتظار چیزی شبیه به پاسخ لین را دارم: اینکه در واقع چنین استانداردی وجود ندارد. حتی به ذهنم هم نمی رسید - اطلاعات من از کتاب های درسی محبوب است و به دلایلی که "همه این کار را انجام می دهند."

یا گزینه دیگری: اما اگر از استانداردهای جدیدی پیروی کنید که من در تمرین خود با آنها روبرو نشده ام - مانند xhtml (دقیقاً xhtml را بررسی کردم) ، این ترفند کار نخواهد کرد. بنابراین نیازی به ایجاد مشکل در حمل و نقل کدهای HTML نوشته شده نیست.

یا در نهایت: چگونه این کار را خودتان انجام می دهید؟

و به هر حال، سوال مشابهی را مطرح می کند. سند بالا می گوید "برای جلوگیری از سردرگمی". اما سردرگمی تنها در صورتی امکان‌پذیر است که یکی از کدهای ارائه‌شده دنبال شود. اگر مثلاً یک URL مانند "..../script?A=1&B=2" باشد چه؟ اگر اشتباهاً این URL را به عنوان href (که البته در حین آزمایش به درستی کار می‌کند) را مشخص کنم، خطری را تهدید می‌کنم؟ هر چیزی غیر از وضعیت بسیار بعید که در 10 سال (زمانی که سایت قدیمی است یا قبلاً ده بار بازنویسی شده است) یک موجودیت با نام عجیب &B بدون نام نهایی ظاهر شود. ? به عبارت دیگر چقدر باید همه این موارد را با دقت بررسی کرد؟

دانیال، اگر مطمئن هستید که با کدهای موجود مشکلی ندارید، می توانید به سادگی & بنویسید. اگر کد جدیدی در آینده ظاهر شود، فکر می کنم به صراحت اعلام می شود که در آن نیست مشخصات HTML 4.01، بنابراین نباید بر یک سند به طور معمول اعلام شده تأثیر بگذارد. یا انتظار دارید که استانداردهای آینده را توسط تغییر سادهخطوط کلی سند؟

دانیل آلیوسکی [پرونده]
در XML، یک علامت نقل قول معمولی به عنوان متن نیز مشکلی ایجاد نمی کند (البته در XHTML). نقل قول های IMHO معمولاً فقط به یک دلیل به "" ترجمه می شوند - شما نمی خواهید هنگام جایگزینی در XML/HTML/XHTML دو تابع برای تبدیل متن به فرم ایمن بنویسید.

هدف این درس:

  • BI باید فرمت ضبط XML را بداند
  • BI باید بتواند سندی را در قالب کد XML ترسیم کند
  • BI باید انواع داده ها را بشناسد و بتواند از آنها استفاده کند
  • توجه: XML آنقدر که در این آموزش توضیح داده ایم مختصر نیست. ما فقط آن دسته از ویژگی های زبان XML را در نظر می گیریم که در سیستم ODA-TM استفاده می شود.

    XML. مبانی

    XML برای ساختار، ذخیره و انتقال اطلاعات ایجاد شده است.

    مثال زیر، "یادداشت از یک دوست به یک دوست"، فرم XML دارد:

    یادآوری نیکولای ایوان امیدوارم جلسه ما را فراموش نکرده باشید

    از نظر بصری، این کد را می توان به شکل زیر نشان داد (شکل 1.).

    کد دارای یک فرستنده و یک گیرنده اطلاعات است، همچنین دارای سرصفحه و بدنه پیام است.

    این به معنای پردازش، ارسال و نمایش توسط شخصی است.

    اما همچنان، این سند XML هیچ کاری انجام نمی دهد. این فقط اطلاعاتی است که در برچسب ها پیچیده شده است.

    XML - درخت

    XML ساختار درختی دارد. سند همیشه یک عنصر ریشه دارد (دستورالعمل ربطی به درخت ندارد). یک عنصر درخت همیشه دارای فرزندان و اجداد است، به جز عنصر ریشه که اجدادی ندارد و عناصر بن بست (برگ درختان) که نسلی ندارند. هر عنصر درخت در یک سطح تودرتوی خاص قرار دارد (از این پس به عنوان "سطح" نامیده می شود). عناصر در همان سطح دارای عناصر قبلی و بعدی هستند.

    برچسب های خود را با استفاده از XML ایجاد کنید

    هیچ قالب استانداردی برای ایجاد برچسب ها (توصیف کننده ها، عناصر) وجود ندارد.

    XML هیچ برچسب از پیش تعریف شده ای ندارد.

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

    سینتکس قوانین XML بسیار ساده و منطقی است

    • همه عناصر XML باید دارای یک تگ بسته شوند
    • عناصر XML باید به درستی تو در تو باشند (یکی در داخل دیگری و در هیچ موردی متقاطع نشوند)
    • اسناد XML باید یک عنصر ریشه داشته باشند (اسناد XML باید دارای یک عنصر باشد که والد همه عناصر دیگر باشد. این عنصر عنصر ریشه نامیده می شود.
    • مقدار ویژگی XML باید در علامت نقل قول قرار داده شود.
    نظرات

    اگر می خواهید بخشی از یک سند XML را برای برنامه تحلیلگر کاملاً «غیرقابل مشاهده» کنید، می توانید با نوشتن کاراکترهای جلوی آن، آن را به عنوان یک نظر قالب بندی کنید.< !-- , а после него - символы -->با دو خط تیره پشت سر هم

    مثلا:

    < !-- Это комментарий -->

    برنامه تحلیلگر از کل این ساختار صرفنظر می کند بدون اینکه حتی به آن نگاه کند.

    این نحو نظر دو محدودیت بر آن اعمال می کند:

    • شما نمی توانید دو خط فاصله پشت سر هم در یک نظر بنویسید.
    • یک نظر را نمی توان با خط فاصله پایان داد.
    عناصر XML

    یک عنصر XML همه چیز از تگ شروع عنصر تا تگ پایان آن است.

    عنصر ممکن است شامل موارد زیر باشد:

    • عناصر دیگر
    • متن
    • ویژگی های
    • یا ترکیبی از تمام موارد بالا...
    قوانین نامگذاری XML

    عناصر XML باید از این قوانین نامگذاری پیروی کنند:

    • نام ها می توانند شامل حروف، اعداد و سایر نمادها باشند
    • نام ها نمی توانند با یک عدد یا علامت نگارشی شروع شوند
    • نام ها نمی توانند دارای فاصله باشند
    ویژگی های

    صفات ارائه می کنند اطلاعات تکمیلیدر مورد عناصری که بخشی از داده ها نیستند.

    در مثال زیر، نوع فایل مربوط به داده ها نیست، اما برای نرم افزاری که ممکن است عنصر را دستکاری کند، مهم است:

    computer.gif

    ویژگی های XML باید در گیومه محصور شوند

    مقادیر مشخصه باید همیشه در گیومه باشد. می توان از نقل قول های تک یا دوگانه استفاده کرد. مثال: برای تعیین جنسیت یک فرد، عنصر را می توان به صورت زیر نوشت:

    اگر خود مقدار مشخصه حاوی دو نقل قول باشد، می توانید از آن استفاده کنید نقل قول های تک، مانند این مثال:

    یا می توانید از اشیاء کاراکتر استفاده کنید: &&

    چند نمونه از استفاده از نوع داده Date

    تاریخ به عنوان یک ویژگی

    یادآوری Tove Jani این آخر هفته منو فراموش نکن!

    تاریخ به عنوان عنصر

    10/01/2008 یادآوری Tove Jani این آخر هفته مرا فراموش نکنید!

    تاریخ به عنوان یک عنصر توسعه یافته

    01/10/2008 یادآوری Tove Jani این آخر هفته مرا فراموش نکنید!

    ویژگی های فراداده

    از این شناسه ها می توان برای تعریف عناصر XML استفاده کرد.

    مثال:

    یادآوری Tove Jani این آخر هفته مرا فراموش نکنید! Jani Tove Re: یادآوری

    داده های مربوط به داده ها باید به عنوان ویژگی ها و خود داده ها باید به عنوان عناصر ذخیره شوند.

    XML. نوع داده انواع ساده داخلی تاریخ و زمان
    • dateTime حاوی تاریخ و زمان در قالب است CCYY-MM-DTh:mm:ss
    • مدت - نشان دهنده مدت زمانی است که بر حسب روز، ساعت، دقیقه و ثانیه میلادی بیان می شود.

    به عنوان مثال: رکورد P1Y2M3DT10H30M45Sیعنی یک سال (1Y)، دو ماه (2M)، سه روز (3DT)، ده ساعت (10H)، سی دقیقه (30M) و 45 ثانیه (45S).

    ورودی را می توان به اختصار P120M به معنای 120 ماه و T120M به معنای 120 دقیقه نامید.

    • زمان شامل زمان در قالب عادی است hh:mm:ss
    • تاریخ حاوی تاریخ در قالب است CCYY-MM-DD
    • gYearMonth سال و ماه را در قالب اختصاص می دهد CCYY-MM
    • gYear به معنای سال در قالب است CCYY
    • gMonthDay شامل ماه و روز در قالب است MM-DD
    • gDay روز ماه در قالب DD
    • ماه gMonth در قالب MM
    رشته های کاراکتر

    رشته نوع کاراکتر اصلی است.

    یک رشته کاراکتر به عنوان دنباله ای از کاراکترهای یونیکد، از جمله کاراکترهای Space، Tab، Carriage return و feed line.

    • normalizedString - یک نوع فرعی از نوع - اینها رشته هایی هستند که حاوی فیدهای خط "\n"، حمل "\r" و برگه های افقی "\t" نیستند.
      • token - یک نوع فرعی از نوع normalizedString - خیر، به جز فضاهای پیشرو و انتهایی و چندین فاصله متوالی.
        • زبان - زیرنوع رمز، تعریف شده برای ثبت نام یک زبان طبق توصیه RFC 1766، به عنوان مثال ru, en, de, fr.
        • NMTOKEN یک زیرنوع توکن است که فقط در ویژگی ها برای ثبت مقادیر شمارش شده آنها استفاده می شود.
        • نام - یک زیرگروه از رمز تشکیل شده از نام های XML - دنباله ای از حروف، اعداد، خط تیره، نقطه، دو نقطه، زیرخط، که با یک حرف شروع می شود (به جز دنباله حروف رزرو شده X، x، M، m، L، lدر هر ترکیبی از موارد) یا زیرخط. نام هایی که با یک رشته شروع می شوند xmlتوسط خود مشخصات XML استفاده می شود.
          • NCName یک نوع فرعی از نام است که حاوی دو نقطه نیست. سه نوع زیر تعریف شده است: ID، IDREF، ENTITY
    انواع باینری
    • بولن - باینری، منطقی. مقادیر را می پذیرد: True یا False (1 یا 0)
    • base64Binary - اعداد صحیح باینری کدگذاری شده Base64
    • hexBinary - اعداد صحیح باینری به شکل هگزا دسیمال بدون هیچ کاراکتر اضافی
    اعداد واقعی
    • اعشاری اعداد واقعی هستند که با یک نقطه ثابت نوشته می شوند: 123.45، -0.48747798، و غیره.
    • انواع دوبل و شناور مطابق با استاندارد IEEE754-85، نوشته شده با نقطه ثابت یا شناور هستند.
    تمام اعداد
    • عدد صحیح - نوع عدد صحیح پایه شامل اعداد با مرتبه صفر است که به عنوان یک نوع فرعی درک می شود اعشاری
    • شماره - یک عدد را تعریف می کند (بدون محدودیت در تعداد ارقام). ممکن است شامل علامت، کسر و توان باشد. ارزش ها تغییر می کند

    از 1.7976931348623157E+308 تا 2.2250738585072014E-308

    ما دوباره مطالعه خود را در مورد XML ادامه می دهیم و در این مقاله با ساختارهای XML مانند دستورات پردازش، نظرات، ویژگی ها و سایر عناصر XML آشنا می شویم. این عناصر اساسی هستند و به شما امکان می دهند به طور انعطاف پذیر، مطابق با استاندارد، اسناد کاملاً هر پیچیدگی را علامت گذاری کنید.

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

    عناصر XML عناصر XML خالی و غیر خالی

    همانطور که در مقاله قبلی ذکر شد، برچسب ها در XML به سادگی متن را علامت گذاری نمی کنند، همانطور که در HTML وجود دارد، بلکه عناصر جداگانه (اشیاء) را برجسته می کنند. به نوبه خود، عناصر به صورت سلسله مراتبی اطلاعات را در یک سند سازماندهی می کنند که به نوبه خود آنها را به واحدهای ساختاری اصلی زبان XML تبدیل می کند.

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

    عنصر XML خالی

    عنصر XML غیر خالی

    محتوای عنصر ...

    همانطور که از مثال بالا می بینیم، تفاوت اصلی بین عناصر خالی و غیر خالی این است که فقط از یک تگ تشکیل شده اند. علاوه بر این، همچنین شایان ذکر است که در XML همه نام ها به حروف بزرگ و کوچک حساس هستند. به این معنی که نام های myElement، MyElement، MYELEMENT و غیره. بنابراین با یکدیگر متفاوت هستند این لحظهبرای جلوگیری از اشتباهات در آینده، ارزش آن را دارد که فوراً به خاطر بسپارید.
    بنابراین، ما عناصر را کشف کردیم. حال به سراغ نکته بعدی می رویم که سازماندهی منطقی اسناد XML است.

    سازماندهی منطقی اسناد XML. ساختار درختی داده های XML

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

    برای سهولت در درک مطلب بالا، با یک مثال به تصویر زیر نگاه می کنیم.

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

    ویژگی های XML قوانین نوشتن ویژگی ها در XML

    در XML، عناصر همچنین می توانند دارای ویژگی هایی با مقادیر اختصاص داده شده به آنها باشند که در گیومه های تکی یا دوگانه قرار می گیرند. ویژگی یک عنصر به صورت زیر تنظیم می شود:

    در این مورد، یک ویژگی با نام "ویژگی" و مقدار "مقدار" استفاده شد. شایان ذکر است که ویژگی XML باید مقداری داشته باشد و نمی تواند خالی باشد. در غیر این صورت، کد از نقطه نظر XML نادرست خواهد بود.

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

    قبل از اینکه به سایر ساختارهای XML نگاه کنیم، همچنین شایان ذکر است که کاراکترهای خاصی مانند علامت "&" یا براکت های زاویه "" نمی توانند به عنوان مقادیر هنگام ایجاد ویژگی ها استفاده شوند. این کاراکترها به‌عنوان کاراکترهای کنترلی رزرو می‌شوند ("&" یک موجودیت است و "" یک تگ عنصر را باز و بسته می‌کند) و نمی‌توان آنها را در "شکل خالص" آن استفاده کرد. برای استفاده از آنها، باید به جایگزینی کاراکترهای خاص متوسل شوید.

    دستورالعمل های پردازش XML (دستورالعمل های پردازش). اعلان XML

    XML این قابلیت را دارد که دستورالعمل‌هایی را در یک سند قرار دهد که حاوی اطلاعات خاصی برای برنامه‌هایی است که یک سند خاص را پردازش می‌کنند. دستورالعمل های پردازش در XML به شرح زیر ایجاد می شود.

    همانطور که از مثال بالا می بینید، در XML، دستورالعمل های پردازش در گوشه های نقل قول با علامت سوال محصور شده اند. این کمی شبیه نمونه معمولی است که در اولین درس های PHP به آن نگاه کردیم. بخش اول دستورالعمل پردازش برنامه یا سیستمی را مشخص می کند که قسمت دوم این دستورالعمل یا محتوای آن در نظر گرفته شده است. با این حال، دستورالعمل‌های پردازش فقط برای برنامه‌هایی معتبر است که به آنها خطاب می‌شود. نمونه ای از یک دستورالعمل پردازش می تواند دستورالعمل زیر باشد.

    شایان ذکر است که XML ساختار خاصی دارد که بسیار شبیه به یک دستورالعمل پردازش است، اما خود یکی نیست. این یک اعلان XML است که به پردازنده منتقل می شود نرم افزاربرخی از اطلاعات در مورد ویژگی های سند XML، مانند رمزگذاری، نسخه زبانی که این سند به آن نوشته شده است و غیره.

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

    از آنجایی که ما به شبه صفات پرداخته ایم، بیایید به معنای آنها نگاه کنیم.

    • رمزگذاری - مسئول رمزگذاری سند XML است. به طور معمول از رمزگذاری UTF8 استفاده می شود.
    • نسخه – نسخه ای از زبان XML که این سند در آن نوشته شده است. به طور معمول این XML نسخه 1.0 است.

    خوب، اکنون اجازه دهید به قسمت پایانی مقاله برویم و ساختارهای XML را به عنوان بخش نظرات و CDATA در نظر بگیریم.

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

    ویژگی های XML

    که در ویژگی های HTMLارائه اطلاعات اضافی در مورد عناصر:

    ویژگی های XML باید در نقل قول قرار داده شوند

    ارزش های ویژگی ها در xmlهمیشه باید در علامت نقل قول قرار داده شود. می توان از هر دو نقل قول تکی و دوگانه استفاده کرد. برای نشان دادن جنسیت عنصر شخص، می توانید آن را به صورت زیر بنویسید:

    اگر مقدار مشخصه خود دارای گیومه های دوگانه باشد، می توانید از نقل قول های تکی مانند این مثال استفاده کنید:

    عناصر XML در مقابل ویژگی ها

    به نمونه های زیر دقت کنید:

    ویکتوریا
    پتروا

    زن
    ویکتوریا
    پتروا

    در مثال اول، جنسیت یک صفت است. در دومی، جنسیت یک عنصر است. هر دو مثال اطلاعات یکسانی را ارائه می دهند.

    هیچ قانونی در مورد زمان استفاده از ویژگی ها و زمان استفاده از عناصر وجود ندارد. ویژگی ها در HTML مفید هستند. در XML، توصیه می کنم از آنها اجتناب کنید. به جای آن از عناصر استفاده کنید.

    راه مورد علاقه من

    سه سند XML زیر دقیقاً حاوی همان اطلاعات هستند:

    ویژگی تاریخ XML در مثال اول استفاده شده است:

    عنصر تاریخ توسعه یافته در مورد سوم استفاده می شود: (این راه مورد علاقه من است):



    10
    01
    2008

    پیتر
    سوتا
    یادآور

    از ویژگی های XML اجتناب کنید؟

    برخی از مشکلات استفاده از ویژگی های xml:

    • ویژگی ها نمی توانند چندین مقدار داشته باشند (عناصر می توانند)
    • ویژگی ها نمی توانند شامل ساختارهای درختی باشند (عناصر می توانند)
    • گسترش ویژگی ها سخت تر است (برای تغییرات آینده)

    اینطوری انجام نده:


    ویژگی های XML برای فراداده


    واسیا
    سوتا
    یادآور
    یادت نره فردا با من تماس بگیری


    سوتا
    واسیا
    پاسخ: یادآوری
    خوب

    ویژگی های id بالا برای شناسایی یادداشت های مختلف استفاده می شود. آنها بخشی از خود یادداشت نیستند.

    آنچه من در اینجا می‌خواهم بگویم این است که متادیتا (داده‌های مربوط به داده‌ها) باید به عنوان ویژگی‌های xml و خود داده‌ها باید به عنوان عناصر ذخیره شوند.

    با تشکر از توجه شما!.