عنصر <any> در XSD

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

عنصر <any>

عنصر <any> به ما امکان می‌دهد که با استفاده از عناصر غیرمتعیین‌شده در schema، مستند 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" را اعلام نکرده باشد.

این شماتیک موجود است، به نام "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")، از اجزا دو شماتیک مختلف استفاده کرده است، "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 مشخص نشده‌اند.