(XSD )
عنصر «anyAttribute» در XSD اجازه افزودن «ویژگی (Attribute)»های جدید را می دهد. بنابراین، سند «قابل گسترش» می شود. مثل بازی که اسلات اضافی برای آیتم ها دارد و بعداً آیتم تازه می گیری.
کاربرد anyAttribute در طرح واره
وقتی می خواهی ویژگی های ناشناخته را مجاز کنی، anyAttribute را داخل complexType می گذاری. سپس، هر ویژگی جدید می تواند روی عنصر بیاید.
<xs:element name="person">
<xs:complexType>
<xs:sequence>
<xs:element name="firstname" type="xs:string" />
<xs:element name="lastname" type="xs:string" />
</xs:sequence>
<xs:anyAttribute />
</xs:complexType>
</xs:element>
نکته: anyAttribute به صورت پیش فرض همه فضاهای نام را می پذیرد. می توانی با فیلترها محدودش کنی.
تعریف ویژگی در طرح واره جدا
گاهی بهتر است ویژگی جدید را در فایل طرح واره جدا تعریف کنی. سپس با schemaLocation آن را کنار طرح واره اصلی مصرف کنی.
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="https://www.w3schools.com"
xmlns="https://www.w3schools.com"
elementFormDefault="qualified">
<xs:attribute name="eyecolor">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="blue|brown|green|grey" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:schema>
نمونه سند با دو طرح واره
اکنون، سند XML از دو طرح واره family.xsd و attribute.xsd استفاده می کند. ویژگی eyecolor مجاز است.
<?xml version="1.0" encoding="UTF-8"?>
<persons xmlns="http://www.microsoft.com"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:SchemaLocation="http://www.microsoft.com family.xsd https://www.w3schools.com attribute.xsd">
<person eyecolor="green">
<firstname>Hege</firstname>
<lastname>Refsnes</lastname>
</person>
<person eyecolor="blue">
<firstname>Stale</firstname>
<lastname>Refsnes</lastname>
</person>
</persons>
هشدار: زیاده روی در anyAttribute اعتبارسنجی را ضعیف می کند. فقط در نقاط انعطاف از آن استفاده کن.
راهنمای عملی کوتاه
- complexType را مشخص کن و sequence را کامل کن.
- anyAttribute را اضافه کن تا ویژگی های جدید مجاز شوند.
- در صورت نیاز، ویژگی ها را در طرح واره جدا تعریف کن.
جمع بندی سریع
- anyAttribute، ویژگی های اضافه را می پذیرد.
- می توانی دامنه آن را محدود کنی.
- تعریف جدا مدیریت را ساده تر می کند.
- اعتبارسنجی را قربانی نکن.
عنصر any در XSD مکمل طبیعی anyAttribute است.
گروه های جایگزینی XSD در طراحی انعطاف مفید هستند.
anyAttribute در XSD مرجع داخلی این صفحه است.