XML Schema <xs:any>元素

XML Schema <xs:any> 元素使我们有能力通过未被 schema 规定的元素来拓展 XML 文档

<xs:any> 元素

<xs:any>元素使我们有能力通过未被 schema 规定的元素来拓展 XML 文档

下面的代码是 XML Schema 文档 "family.xsd" 一部分片段

它展示了一个针对 "person" 元素的声明

通过使用 <xs:any> 元素,我们可以通过任意元素(在 <lastname> 之后)扩展 "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" 元素来扩展 "person" 元素

这此种情况下我们就可以这么做,即使以上这个 schema 的作者没有声明任何 "children" 元素

<?xml version="1.0" encoding="ISO-8859-1"?>
<xs:schema 
    xmlns:xs="http://www.w3.org/2001/XMLSchema" 
    targetNamespace="https://www.twle.cn" 
    xmlns="https://www.twle.cn" 
    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 文件则使用了来自两个不同的 schema 中的成分,"family.xsd" 和 "children.xsd"

<?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.twle.cn children.xsd">
    <person>
        <firstname>Hege</firstname>
        <lastname>Refsnes</lastname>
        <children>
            <childname>Cecilie</childname>
        </children>
    </person>
    <person>
        <firstname>Stale</firstname>
        <lastname>Refsnes</lastname>
    </person>
</persons>

上面这个 XML 文件是有效的,应为 schema "family.xsd" 允许我们通过在 "lastname" 元素后的可选元素来扩展 "person" 元素

<xs:any> 和 <xs:anyAttribute> 均可用于制作可扩展的文档

它们使文档有能力包含未在主 XML schema 中声明过的附加元素

关于   |   FAQ   |   我们的愿景   |   广告投放   |  博客

  简单教程,简单编程 - IT 入门首选站

Copyright © 2013-2022 简单教程 twle.cn All Rights Reserved.