Xml Schema 之 any 和 anyAttribute

本文介绍如何使用XML Schema定义中的<any>和<anyAttribute>元素来扩展XML文档,通过实例展示了如何结合不同Schema文件实现元素与属性的灵活扩展。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<any> 元素通过未被 schema 规定的元素来拓展 XML 文档

<any> 元素

例如:两个schema文件:person.xsdchildren.xsd
person.xsd:
<lastName>后的<any>是用来扩展<person>元素的

<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.xsd:

<xs:element name="children">

  <xs:complexType>

    <xs:sequence>

      <xs:element name="childname" type="xs:string"

      maxOccurs="unbounded"/>

    </xs:sequence>

  </xs:complexType>

</xs:element>

现在,我们希望使用 "children" 元素来扩展 "person" 元素。这此种情况下我们就可以这么做,即使以上这个 schema 的作者没有声明任何 "children" 元素。

下面这个 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.w3school.com.cn children.xsd">

<person>

<firstname>David</firstname>

<lastname>Smith</lastname>

<children>

  <childname>mike</childname>

</children>

</person>

<person>

<firstname>Tony</firstname>

<lastname>Smith</lastname>

</person>

</persons>

 

<anyAttribute> 元素通过未被 schema 规定的属性来扩展 XML 文档

<anyAttribute> 元素

例如:两个schema文件family.xsdattribute.xsd

family.xsd

<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>

attribute.xsd

<xs:attribute name="gender">

  <xs:simpleType>

    <xs:restriction base="xs:string">

      <xs:pattern value="male|female"/>

    </xs:restriction>

  </xs:simpleType>

</xs:attribute>

下面这个 XML(名为 "Myfamily.xml"),使用了来自不同 schema 的成分,"family.xsd" "attribute.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.w3school.com.cn attribute.xsd">

<person gender="female">

<firstname>Jane</firstname>

<lastname>Smith</lastname>

</person>

<person gender="male">

<firstname>David</firstname>

<lastname>Smith</lastname>

</person>

</persons>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值