XML DTD & Schema 笔记整理

本文介绍了DTD(Document Type Definition)的基本语法,包括内部DTD及外部DTD的声明方式,并详细阐述了如何使用XML Schema来定义XML文档结构,涵盖元素、属性、实体及数据类型的声明。

 

个人笔记整理的,详细请参看 http://www.w3school.com.cn/dtd/index.asp

 

 

 

 

1. 内部
<!DOCTYPE note [
  <!ELEMENT note (to,from,heading,body)>
  <!ELEMENT to      (#PCDATA)>
  <!ELEMENT from    (#PCDATA)>
  <!ELEMENT heading (#PCDATA)>
  <!ELEMENT body    (#PCDATA)>
]>

2. 外部:
 <!DOCTYPE note SYSTEM "note.dtd">
3. XML:
 element
 attribute
 entity
 PCDATA
 CDATA

4. 声明一个元素:
 <!ELEMENT 元素名称 (元素内容)>
 <!ELEMENT 元素名称 类别>
 <!ELEMENT 元素名称 EMPTY>
 <!ELEMENT note ANY>  // 带有任何内容的元素


5. 带有子元素(序列)的元素:
 <!ELEMENT note (to,from,heading,body)>
 <!ELEMENT note (message*)>
 <!ELEMENT note (message)>
 <!ELEMENT note (message+)>
 <!ELEMENT note (to,from,header,(message|body))>

6. 声明属性:
 <!ATTLIST 元素名称 属性名称 属性类型 默认值>

 <!ATTLIST payment type CDATA "check">
 <payment type="check" /> // xml 实例
 
 // 属性类型:
 CDATA: 值为字符数据
 (en1|en2...) 枚举列表中的一个值
 ID 值为唯一的 id
 ENTITY: 值为一个实体

 // 值
 #REQUIRED
 #IMPLIED 不是必须的
 #FIXED value 固定的

 <!ATTLIST contact fax CDATA #IMPLIED>
 <contact fax="555-667788" /> // 合法
 <contact />  // 合法


 <!ATTLIST sender company CDATA #FIXED "Microsoft">
 <sender company="Microsoft" /> //  合法
 <sender company="W3School" /> // 非法


 <!ATTLIST payment type (check|cash) "cash">
 <payment type="check" />
 <payment type="cash" />
7.  实体声明:
 <!ENTITY 实体名称 "实体的值">
   

 <!ENTITY writer "Bill Gates">
 <!ENTITY copyright "Copyright W3School.com.cn">

 <author>&writer;&copyright;</author> // xml

8.   XML Schema:
 
 定义可出现在文档中的元素
 定义可出现在文档中的属性
 定义哪个元素是子元素
 定义子元素的次序
 定义子元素的数目
 定义元素是否为空,或者是否可包含文本
 定义元素和属性的数据类型
 定义元素和属性的默认值以及固定值

9.   XML Schema 最重要的能力之一就是对数据类型的支持:
10.  最常用的类型是:
 xs:string
 xs:decimal
 xs:integer
 xs:boolean
 xs:date
 xs:time

11.  值:
 <xs:element name="color" type="xs:string" default="red"/> // 默认值
 <xs:element name="color" type="xs:string" fixed="red"/>  // 固定值

12.  属性:
 <xs:attribute name="xxx" type="yyy"/>

 <lastname lang="EN">Smith</lastname>  对应 ---> <xs:attribute name="lang" type="xs:string"/>

 <xs:attribute name="lang" type="xs:string" use="required"/> // 必须的属性

13. 对一组值的限定
 <xs:element name="car">
  <xs:simpleType>
    <xs:restriction base="xs:string">
      <xs:enumeration value="Audi"/>
      <xs:enumeration value="Golf"/>
      <xs:enumeration value="BMW"/>
    </xs:restriction>
  </xs:simpleType>
 </xs:element>
 或者
 <xs:element name="car" type="carType"/>

 <xs:simpleType name="carType">
   <xs:restriction base="xs:string">
     <xs:enumeration value="Audi"/>
     <xs:enumeration value="Golf"/>
     <xs:enumeration value="BMW"/>
   </xs:restriction>
 </xs:simpleType>

14.  对一系列值的限定
 <xs:element name="initials">

 <xs:simpleType>
   <xs:restriction base="xs:string">
     <xs:pattern value="[A-Z][A-Z][A-Z]"/>
   </xs:restriction>
 </xs:simpleType>

 </xs:element>

15.  对长度的限定:
 <xs:element name="password">
  <xs:simpleType>
    <xs:restriction base="xs:string">
      <xs:length value="8"/>
    </xs:restriction>
  </xs:simpleType>
 </xs:element>
16.  <xs:all> 可以按任意顺序出

(1)普通用户端(全平台) 音乐播放核心体验: 个性化首页:基于 &ldquo;听歌历史 + 收藏偏好&rdquo; 展示 &ldquo;推荐歌单(每日 30 首)、新歌速递、相似曲风推荐&rdquo;,支持按 &ldquo;场景(通勤 / 学习 / 运动)&rdquo; 切换推荐维度。 播放页功能:支持 &ldquo;无损音质切换、倍速播放(0.5x-2.0x)、定时关闭、歌词逐句滚动&rdquo;,提供 &ldquo;沉浸式全屏模式&rdquo;(隐藏冗余控件,突出歌词与专辑封面)。 多端同步:自动同步 &ldquo;播放进度、收藏列表、歌单&rdquo; 至所有登录设备(如手机暂停后,电脑端打开可继续播放)。 音乐发现与管理: 智能搜索:支持 &ldquo;歌曲名 / 歌手 / 歌词片段&rdquo; 搜索,提供 &ldquo;模糊匹配(如输入&lsquo;晴天&rsquo;联想&lsquo;周杰伦 - 晴天&rsquo;)、热门搜索词推荐&rdquo;,结果按 &ldquo;热度 / 匹配度&rdquo; 排序。 歌单管理:创建 &ldquo;公开 / 私有 / 加密&rdquo; 歌单,支持 &ldquo;批量添加歌曲、拖拽排序、一键分享到社交平台&rdquo;,系统自动生成 &ldquo;歌单封面(基于歌曲风格配色)&rdquo;。 音乐分类浏览:按 &ldquo;曲风(流行 / 摇滚 / 古典)、语言(国语 / 英语 / 日语)、年代(80 后经典 / 2023 新歌)&rdquo; 分层浏览,每个分类页展示 &ldquo;TOP50 榜单&rdquo;。 社交互动功能: 动态广场:查看 &ldquo;关注的用户 / 音乐人发布的动态(如&lsquo;分享新歌感受&rsquo;)、好友正在听的歌曲&rdquo;,支持 &ldquo;点赞 / 评论 / 转发&rdquo;,可直接点击动态中的歌曲播放。 听歌排行:个人页展示 &ldquo;本周听歌 TOP10、累计听歌时长&rdquo;,平台定期生成 &ldquo;全球 / 好友榜&rdquo;(如 &ldquo;好友中你本周听歌时长排名第 3&rdquo;)。 音乐圈:加入 &ldquo;特定曲风圈子(如&lsquo;古典音乐爱好者&rsquo;)&rdquo;,参与 &ldquo;话题讨论(如&lsquo;你心中最经典的钢琴曲&rsquo;)、线上歌单共创&rdquo;。 (2)音乐人端(创作者中心) 作品管理: 音乐上传:支持 &ldquo;无损音频(FLAC/WAV)+ 歌词文件(LRC)+ 专辑封面&rdquo; 上传,填写 &ldquo;歌曲信息
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值