Schema中的xsd:any和xsd:anyAttribute

2024-06-10 21:58
文章标签 schema xsd anyattribute

本文主要是介绍Schema中的xsd:any和xsd:anyAttribute,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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

下面这个例子是从名为 "family.xsd" 的 XML schema 中引用的片段。它展示了一个针对 "person" 元素的声明。通过使用 <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" 元素。

请看这个 schema 文件,名为 "children.xsd":

<?xml version="1.0" encoding="ISO-8859-1"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.w3school.com.cn"
xmlns="http://www.w3school.com.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 文件(名为 "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>上面这个 XML 文件是有效的,这是由于 schema "family.xsd" 允许我们通过在 "lastname" 元素后的可选元素来扩展 "person" 元素。

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



内容模型可以对在XML文档内使用的元素、属性和类型进行限制,确定用户可以在XML实例的哪些等级添加自己的元素和属性。
any
  当在XML中声明元素时any是默认的内容模型,该模型可以包含文本、元素和空格。如果允许添加元素的内容,且无需屋里修改模式文件,就可以使用该模型。
例如:
<xsd:xchema xmlns:xsd=”http://www.w3.org/2001/XMLSchema”>
<xsd:element name=”name”
>
<xsd:complexType>

<xsd:sequence>

<xsd:element name=”first” type=”xsd:string” />
<xsd:element name=”middle” type=”OtherNames”
 />
<xsd:element name=”last” type=”xsd:string”
 />
</xsd:sequence>
</xsd:complexType>

</xsd:element>
<xsd:complexType name=
”OtherNames”>

<xsd:sequence>

<xsd:any namespace=”##any” processContents=”lax” minOccurs=”0” maxOccurs=”unbounded” />
</xsd:sequence>
</xsd:complexType>
</xsd:schema>
例子中的xsd:any元素说明该类型允许添加内容。namespace属性允许的值为:

##any(元素可以来自任何命名空间)
##other(元素可以来自除了该元素的父元素所在的目标命名空间之外的命名空间)
##local(元素不受命名空间的限制)
##targetNamespace(元素来自父元素的目标命名空间)
processContents属性说明对这里所创建的元素进行验证时所执行的操作,取值有如下3种:
  strict(标明XML处理器必须获得和那些命名空间相关联的模式,并验证元素和属性)
  lax(与strict相似,只是如果处理器找不到模式文档,也不会出现错误)
  skip(不利用模式文档验证XML文档)
上述模式的一个有效实例如下:
<?xml version=”1.0”?>
<name>
  
<first>santld</first>
  
<middle>
<nameInChina>San</nameInChina>
  
</middle>
  
<last>wang</last>
</name>


这篇关于Schema中的xsd:any和xsd:anyAttribute的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1049382

相关文章

MySQL数据类型和Schema优化(二)

MySQL数据类型和Schema优化 MySQL合适的数据类型日期和时间类型(datetime、timesamp)整数类型实数类型(float\double\decimal)字符串类型(Varchar、Char) Schema设计缓存表和汇总表 MySQL 良好的逻辑设计与物理设计是高性能的基石,应该根据具体业务需求的查询语句来设计schema,这往往需要权衡各种因素。 比如

Spring源码学习--使用XML Schema文档对XML实例文档校验

文章摘要 在实际开发中读取xml文档的时候,一般都需要先校验,如果使用Sun的XML相关软件包会令你云里雾里。W3C这块的XML相关的规范相当的多,这也是导致XML处理器起来费劲的主要原因。如果xml对应的xsd文档已经定义好,则可以之间复用下面代码对xml文档格式和内容是否合法进行验证。 一、xsd校验xml工具类 import javax.xml.parsers.SA

JAX-WS - 通过xjc命令把Schema生成Java

一、说明     1、使用示例 D:\Works\WebServices\TestXml\src>xjc -d D:\Works\WebServices\TestXml\src -verbose user.xsd     2、常用参数         -d dirName     : 指定生成的文件的存放路径         -p pkgName     : 指定目标包

通过 GitHub Actions 执行数据库 Schema 变更工作流

原文地址 https://www.bytebase.com/docs/tutorials/github-ci/ 教程库:https://github.com/bytebase/github-action-example 开发者们喜欢将 Schema 变更脚本与应用程序代码一起保存在 Git 中,这样变更脚本就能像应用程序代码一样接受审核和版本控制,但仍需将变更脚本手动粘贴到 SQL 客户端,或

spring读取applicationContext.xml,加载xsd错误

maven打包后启动程序遇到遇到解析spring的applicationContext.xml文件报错,错误如下: org.xml.sax.SAXParseException: schema_reference.4: Failed to read schema document 'http://www.springframework.org/schema/beans/spring-beans-

java操作phoenix查询指定table_schema中的数据

原因:     1.phoenix映射hbase表的时候,如果hbase表是存放在某个命名空间下面的话,phoenix创建表的时候必须创建table_schema以后在取创建表,然后才能映射成功 解决方法:         1.如果用./sqlline.py 命令去启动的话,访问schema中的表数据的时候要先使用use <table_schema>命令先指定特定的schema,然后在去访问

Avro Schema格式

Avro Schema格式 Avro是一个数据序列化系统,主要用于支持大批量数据交换的应用。 特点: 支持二进制序列化方式,可以便捷、快速的处理大量数据;动态语言有好,Avro提供的机制使动态语言可以方便的处理Avro数据 1.Avro Schema结构 {"type":"record","name":"aaa","namespace":"bbb","fields":[{"name":"

openGuass——表空间、数据库、Schema详解

目录 一、表空间 二、数据库 三、模式:Schema 四、database schema table之间的关系 五、表 六、分区表 七、索引 八、视图 九、序列 十、同义词 十一、约束 一、表空间 自带了两个表空间:pg_default和pg_global。查看命令:\db 默认表空间pg_default:用来存储非共享系统表、用户表、用户表index、临时表

XML(3)——认识Schema

背景:最近发现自己的时间有点不够用,学习到的东西很多,可是总结的时间少得可怜,常常是学习完过好长一段段时间才有机会去总结。这不,这个XML视频两个星期前就看完了,现在才做总结,唉,时间呀……。这个Schema又是一个新的名词,但和XML有联系,也算是旧知识了吧。 一、定义 描述XML文档的结构; 是基于XML的DTD替代者; Schema也可称为 XSD(XML Schema D

在MySQL中基本认为schema和数据库相同,也就是说schema的名称和数据库的实例的名称相同,一个数据库有一个schema。

在SQL环境下,schema就是数据库对象的集合,所谓的数据库对象也就是常说的表,索引,视图,存储过程等。 在schema之上的,就是数据库的实例,也就是通常create databases获得的东西。也就是说一个schema 实例 可以有多个schema, 可以给不同的用户创建不同的schema,并且他们都是在同一数据库实例下面。 在MySQL中基本认为schema和数据库相同,也就是