XML可扩展标记语言

XML可扩展标记语言

和html格式类似,有开始和结束成对标记

标签名要有意义,建议使用英文,小写字母,单词之间用"-"分割。多级标签之间不要存在同名的情况

可以使用适当的注释与缩进让格式清晰

标签属性用于描述不可或缺的信息,对标签分组或者为标签设置ID时常用属性表示

XML支持5种实体引用

实体引用对应符号说明
&lt;<小于
&gt;>大于
&amp&和号
&apos;单引号
&quot;"双引号

CDATA标签

CDATA指的是不应由XML解析器进行解析的文本数据

从"<![CDATA[“开始,到”]]>"结束

DTD文档类型定义

是一种简单易懂的语义约束方式

文件扩展名.dtd

利用DTD种的<!ELEMENT>标签,可以定义文档种允许出现的节点及数量,例:

定义hr节点下只允许出现1个employee子节点

<!ELEMENT hr (employee)>

employee节点下必须包含一下四个节点,且按顺序出现

<!ELEMENT employee (name,age,salary,department)>

定义name标签只能是文本,#PCDATA代表文本元素

<!ELEMENT name (#PCDATA)>

如某个字节点需要多次重复出现,则需要在子节点后增加相应的描述符。

hr节点写最少出现一个employee子节点

<!ELEMENT hr (employee+)>

hr节点下可出现0…n个employee子节点

<!ELEMENT hr (employee*)>

hr节点下最多只能出现一个employee子节点(不出现或出现一个)

<!ELEMENT hr (employee?)>

定义属性(CDATA类型,默认为"")

<!ATTLIST employee no CDATA "">

定义内容类型(#PCDATA纯文本)

<!ELEMENT name (#PCDATA)>

定义内容是子节点

<!ELEMENT department (dname,address)>

引用DTD文件

在XML中使用<DOCTYPE>标签来引用DTD文件

<!DOCTYPE 根节点 SYSTEM "dtd文件路径">
示例:
<!DOCTYPE hr SYSTEM "hr.dtd">

XML Schema

XML Schema比DTD更复杂,提供了更多功能

XML Schema提供了数据类型、格式限定、数据范围等特性

XML Schema是W3C标准

示例代码:

hr.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<hr xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="hr.xsd">
    <employee no="3309">
        <name>x1</name>
        <age>20</age>
        <salary>4000</salary>
        <department>
            <dname>会计部</dname>
            <address>XX大厦-B102</address>
        </department>
    </employee>
        <employee no="3109">
        <name>x2</name>
        <age>20</age>
        <salary>4000</salary>
        <department>
            <dname>会计部</dname>
            <address>XXX</address>
        </department>
    </employee>
</hr>

hr.xsd文件

<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema">
   <element name="hr">
<!--       complexType标签含义是复杂节点,包含子节点时必须使用这个标签-->
       <complexType>
<!--           sequence标签表示每个标签必须严格按顺序编写-->
           <sequence>
<!--            element节点最少出现一次,最多出现9999次 -->
               <element name="employee" minOccurs="1" maxOccurs="9999">
                   <complexType>
                       <sequence>
                           <element name="name" type="string"></element>
                           <element name="age">
                           <!-- 限制age的取值范围18-60 -->
                               <simpleType>
                                   <restriction base="integer">
                                       <minInclusive value="18"></minInclusive>
                                       <maxInclusive value="60"></maxInclusive>
                                   </restriction>
                               </simpleType>
                           </element>
                           <element name="salary" type="integer"></element>
                           <element name="department">
                               <complexType>
                                   <sequence>
                                       <element name="dname" type="string"></element>
                                       <element name="address" type="string"></element>
                                   </sequence>
                               </complexType>
                           </element>
                       </sequence>
<!--                       use=required表示no属性在任何employee中都是必须的-->
                       <attribute name="no" type="string" use="required"></attribute>
                   </complexType>
               </element>
           </sequence>
       </complexType>
   </element>
</schema>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

摘星喵Pro

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值