عنصر <any> در XSD

عنصر <any> به ما امکان می‌دهد تا با استفاده از عناصر تعریف نشده در شماتیک XML مستند را گسترش دهیم!

عنصر <any>

عنصر <any> به ما امکان می‌دهد تا با استفاده از عناصر تعریف نشده در شماتیک XML مستند را گسترش دهیم!

این مثال یک قطعه از شمای XML به نام "family.xsd" است. این یک نمونه از تعریف برای عنصر "person" را نشان می‌دهد. با استفاده از عنصر <any>، می‌توانیم محتوای "person" را با هر عنصر (پس از <lastname>) گسترش دهیم:

<xs:element name="person">
  <xs:complexType>
    <xs:sequence>
      <xs:element name="firstname" type="xs:string"/>
      <xs:element name="lastname" type="xs:string"/>
      <xs:any minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
</xs:element>

در حال حاضر، ما می‌خواهیم از عنصر "children" برای گسترش عنصر "person" استفاده کنیم. در این حالت می‌توانیم این کار را انجام دهیم، حتی اگر نویسنده این schema هیچگونه عنصر "children" را اعلام نکرده باشد.

این schema فایل را ببینید، به نام "children.xsd":

<?xml version="1.0" encoding="ISO-8859-1"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.codew3c.com"
xmlns="http://www.codew3c.com"
elementFormDefault="qualified">
<xs:element name="children">
  <xs:complexType>
    <xs:sequence>
      <xs:element name="childname" type="xs:string"
      maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>
</xs:element>
</xs:schema>

این فایل XML (به نام "Myfamily.xml") از اجزا دو schema متفاوت استفاده می‌کند، "family.xsd" و "children.xsd":

<?xml version="1.0" encoding="ISO-8859-1"?>
<persons xmlns="http://www.microsoft.com"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:SchemaLocation="http://www.microsoft.com family.xsd
http://www.codew3c.com children.xsd">
<person>
<firstname>David</firstname>
<lastname>Smith</lastname>
<children>
  <childname>mike</childname>
</children>
</person>
<person>
<firstname>Tony</firstname>
<lastname>Smith</lastname>
</person>
</persons>

این فایل XML موجود است زیرا شماتیک "family.xsd" اجازه می‌دهد تا ما از طریق عناصر انتخابی پس از عنصر "lastname" عنصر "person" را گسترش دهیم.

عناصر <any> و <anyAttribute> هر دو برای ساخت مستندهای قابل گسترش قابل استفاده هستند! آنها مستندات را قادر می‌سازند تا عناصر اضافی را شامل شوند که در شماتیک اصلی XML schema ذکر نشده‌اند.