اعتبارسنج XML / XSD
سمت سرورنمونهها
نتیجه اعتبارسنجی
شِمای XSD
سند XML
جزئیات فنی
اعتبارسنج XML / XSD چگونه کار میکند
این ابزار چه کاری انجام میدهد
این اعتبارسنج XML XSD اسناد XML را با استفاده از پردازش سمت سرور در برابر تعریفهای XML Schema بررسی میکند. ابزار ساختار، نوعهای داده، ترتیب عناصر و الزامات ویژگیها را که در شِمای شما تعریف شدهاند اعتبارسنجی میکند. وقتی اعتبارسنجی شکست بخورد، در صورت موجود بودن، خطاهای مشخص را همراه با شمارهٔ خط و ستون گزارش میدهد. اعتبارسنج namespaceها، نوعهای پیچیده، محدودیتهای sequence و facetهای شِما مانند تطبیق الگو و محدودیتهای مقدار را مدیریت میکند.
مثال: اعتبارسنجی فهرست کتاب
این شِمای XSD را در نظر بگیرید که الزام میکند کتابها شناسههای عدد صحیح و قیمتهای اعشاری داشته باشند:
<xs:element name="book">
<xs:complexType>
<xs:sequence>
<xs:element name="title" type="xs:string"/>
<xs:element name="price" type="xs:decimal"/>
</xs:sequence>
<xs:attribute name="id" type="xs:integer" use="required"/>
</xs:complexType>
</xs:element>یک XML نامعتبر مانند <book id="abc"><price>not-a-number</price></book> با خطاهای محدودیت نوع هم برای ویژگی ID و هم برای عنصر price اعتبارسنجی را رد میکند.
موارد استفادهٔ رایج
توسعهدهندگان هنگام یکپارچهسازی با SOAP APIها، اعتبارسنجی فایلهای پیکربندی یا پردازش قالبهای تبادل داده از اعتبارسنجی XML Schema استفاده میکنند. سناریوهای رایج شامل اعتبارسنجی پاسخهای API در برابر شِماهای منتشرشده، بررسی فایلهای پیکربندی قبل از استقرار و اطمینان از کیفیت داده در پایپلاینهای ETL است. این اعتبارسنج بهویژه برای شناسایی ناسازگاری نوعها، نبود عناصر الزامی و ترتیب نادرست عناصر قبل از رسیدن داده به سیستمهای تولیدی مفید است.
موتور اعتبارسنجی و محدودیتها
این ابزار از libxml2 از طریق binding نودجیاس libxmljs استفاده میکند و سازگاری با XML Schema 1.0 را فراهم میکند. اعتبارسنج شِماها را برای امنیت بهطور کامل در سمت سرور پردازش میکند و منابع خارجی را واکشی نمیکند و importهای مبتنی بر شبکه را resolve نمیکند. پردازش entityهای خارجی (XXE) برای ایمنی غیرفعال است. includeها و importهای شِما فقط در صورتی کار میکنند که همهٔ شِماهای ارجاعشده در محتوای اصلی XSD ارائه شده باشند.
- دسترسی شبکه:برای امنیت مسدود است
- Schema importها:باید درونخطی باشند، بدون resolve خارجی
- entityهای خارجی:غیرفعال (محافظت XXE)
- محدودیتهای پردازش:محدودیتهای اندازهٔ معقول اعمال میشود
پردازش سمت سرور در برابر پردازش سمت کلاینت
بررسیهای خوشساختی XML در سمت کلاینت برای اعتبارسنجی نحوِ پایه کافی است. با این حال، اعتبارسنجی XSD به یک موتور تخصصی نیاز دارد، زیرا مرورگرها پردازشگرهای XML Schema را شامل نمیشوند. اعتبارسنجی سمت سرور نتایج یکنواخت را تضمین میکند، ویژگیهای پیچیدهٔ شِما مانند وراثت و import را مدیریت میکند و جداسازی امنیتی در برابر محتوای XML بالقوه مخرب فراهم میآورد.