XSD <any> 元素

Ang <any> na elemento ay nagbibigay ng kapangyarihan sa amin na palawakin ang XML na dokumento sa pamamagitan ng mga elemento na hindi pinagdeklara ng schema!

Ang <any> na elemento

Ang <any> na elemento ay nagbibigay ng kapangyarihan sa amin na palawakin ang XML na dokumento sa pamamagitan ng mga elemento na hindi pinagdeklara ng schema!

Ang eksemplo na ito ay kinuha mula sa fragment ng XML schema na may pangalan na "family.xsd". Ito ay nagpapakita ng isang deklarasyon para sa "person" na elemento. Sa pamamagitan ng paggamit ng <any> na elemento, maaari naming palawakin ang nilalaman ng "person" sa pamamagitan ng kahit anong elemento (sa ibabaw ng <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>

Ngayon, nais naming gamitin ang "children" na elemento upang palawakin ang "person" na elemento. Sa ganitong sitwasyon, maaari naming gawin ito kahit ang may-ari ng schema na ito ay hindi nagdeklara ng anumang "children" na elemento.

Tingnan itong schema na file, na tinatawag na "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>

Ang ibang XML na ito (na tinatawag na "Myfamily.xml"), ay gumagamit ng mga komponente mula sa dalawang magkakaibang schema, "family.xsd" at "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>

Ang XML na ito ay walang maling paraan, dahil pinahihintulutan namin ng schema "family.xsd" na palawakin ang elemento "person" sa pamamagitan ng opisyal na elemento pagkatapos ng "lastname" elemento.

<any> 和 <anyAttribute> 均可用于制作可扩展的文档!它们使文档有能力包含未在主 XML schema 中声明过的附加元素。