JavaWeb之xml学习笔记一(约束初步使用)

2023-11-09

html和xml的不同点:

元素和属性
html中的元素和属性都是预先设定的,而xml中没有预想设定的元素和属性,xml是可扩张的标记语言,标记可以用户自定义元素和属性
使用目的
html使用来显示界面的,注重的是外观和功能
而xml是用来传输数据和加载配置的,注重的是传输的效率和便捷
功能
html可以运行,可以与用户进行交互,而xml不能运行,它像是一个单纯存数据的地方,甚至可以认为它就是一个文本文件
大小写敏感
html中的元素大小写不敏感,而在xml中大小写敏感,例如app和App会被认为是两个不一样的元素
空格问题
在html中会把一连串的空格合并为一个,为xml会保留

xml中的约束(个人理解):

由于xml本身是没有约束的,这样的特性使得其他程序难以准确地读取xml中地数据,这样旧违背了xml地初衷,所以xml中可以添加自定义的约束,如果没有按照约束条件书写,xml张的约束有两种,一种是dtd,一种是scheme,scheme是dtd的下一代,功能更加强大
以下是W3C的示例代码:

<?xml version="1.0"?>
<!--约束可以放在xml里,也可以放在xml之外-->
<!DOCTYPE note [ 
  <!ELEMENT alpha (a,b,c,d)> <!--定义了根元素和子元素,一旦确定约束,xml中少写一个都不行,顺序要一致-->
  <!ELEMENT a    (#PCDATA)> <!--定义元素的类型,这里设置为文本类型-->
  <!ELEMENT b    (#PCDATA)> 
  <!ELEMENT c    (#PCDATA)> 
  <!ELEMENT d    (#PCDATA)> 
]>
<!--以上部分全都是约束,一般在实际的开发过程中不需要我们自己去写约束,约束会由框架提供,我们只要按照约束书写xml代码即可-->

<alpha>
  <a>A</a>
  <b>B</b>
  <c>C</c>
  <d>D</d>
</alpha>

一般使用约束是都会使用外部引入:
修改代码如下:
新建dtd后缀文件,名称自拟:

<!--只是去掉了最外层的!DOCTYPE元素-->
<!ELEMENT alpha (a,b,c,d)>
  <!ELEMENT a    (#PCDATA)> 
  <!ELEMENT b    (#PCDATA)> 
  <!ELEMENT c    (#PCDATA)> 
  <!ELEMENT d    (#PCDATA)>         

修改xml如下,一样可以起到约束的效果:

<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE note SYSTEM "D.dtd">
<alpha>
  <a>A</a>
  <b>B</b>
  <c>C</c>
  <d>D</d>
</alpha>

以下示例使用schema(不完整):
新建一个schema(alpha.xsd):

<?xml version="1.0"?>
<!--设置以xs:开头的元素的命名空间,xmls中文意思为XML Namespace(XML命名空间)-->
<!--表示在这个schema中的元素和属性由http://www.w3.org/2001/XMLSchema定义,schema中定义的不算-->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
			<!--表示被schema定义的元素来自命名空间-->
           targetNamespace="..."
           <!--表示省缺的命名空间-->
           xmlns="..."
           <!--表示所有元素都需要表示命名空间前缀-->
           elementFormDefault="qualified">

    <xs:element name="alpha">
    	<!--表示alpha元素是复杂元素,类型由子元素来定义-->
        <xs:complexType>
        	<!--表示子元素必须按照给定的顺序出现,不然报错-->
            <xs:sequence>
            	<!--name表示元素的名称,type表示元素的类型-->
                <xs:element name="a" type="xs:string"/>
                <xs:element name="b" type="xs:string"/>
                <xs:element name="c" type="xs:string"/>
                <xs:element name="d" type="xs:string"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

</xs:schema>

引用约束(不完整):

<?xml version="1.0"?>
<!--需要在根元素里添加约束-->
<note 
xmlns=""
<!--这一行为固定写法,表示以xsi:为前缀的元素的命名空间-->
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
<!--第一个值是名称空间的名字,第二个值是模式文档的位置-->
xsi:schemaLocation="... alpha.xsd"
>

<alpha>
  <a>A</a>
  <b>B</b>
  <c>C</c>
  <d>D</d>
</alpha>

关于约束的更多解释可以看如下网址的内容:
https://www.w3school.com.cn/schema/schema_schema.asp

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JavaWeb之xml学习笔记一(约束初步使用) 的相关文章

随机推荐

  • gitee上传代码方法(命令)

    第一次上传 创建一个gitee仓库 在 我的电脑 里找到你要上传的文件的位置 在地址栏输入cmd 回车 输入git init 输入git add 输入git commit m 备注信息可更改 输入 git remote add origin
  • C语言中的清屏函数(自己编写)

    在csdn论坛里看到这样一个问题 如何在c语言命令提示下清除屏幕 感兴趣 随查之 有解 include
  • 蓝帽杯半决赛2022

    手机取证 1 iPhone手机的iBoot固件版本号 答案参考格式 iBoot 1 1 1 直接通过盘古石取证 打开 取证大师和火眼不知道为什么都无法提取这个 手机取证 2 该手机制作完备份UTC 8的时间 非提取时间 答案参考格式 200
  • 修炼离线:(五)hbase映射表插入hive

    一 创建hive表 sql drop table if exists ods odsyyy create table if not exists ods odsfff row id string comment 行记录唯一ID 对应ROW
  • Makefile入门二、理解$@、$^和$<

    文章目录 一 理解 lt 的含义 二 举例 三 简提Makefile中打印日志信息 前面简单记录了一下Makefile中helloworld的用法 这次来理解一些 lt 的含义 一 理解 lt 的含义 Makefile中 格式为这样的 ta
  • Spring Roo 实站( 一 )部署安装 & 第一个示例程序

    一 安装 注 可以参与官网spring roo static springsource org spring roo reference html intro html intro exploring sampleROO OPTS http
  • 【Linux 驱动篇(二)】LED 驱动开发

    文章目录 一 Linux 下 LED 灯驱动原理 1 地址映射 1 1 ioremap 函数 1 2 iounmap 函数 2 I O 内存访问函数 2 1 读操作函数 2 2 写操作函数 二 实验程序编写 1 LED 灯驱动程序编写 2
  • 电脑不能开热点的一种可以尝试的解决方法

    1 说明 方法不一定万能 个人情况 win10 以前可以开热点 不知何时起不能再开 会显示 我们无法设置移动热点 2 解决办法 1 管理员方式打开cmd 2 运行命令 netsh int ip reset netsh winsock res
  • 【金融系列】【statsmodels】如何用Python做实证研究?介绍一个功能和STATA很像的Python包,最小二乘,虚拟变量

    博主本科接触的研究主要是公司金融方向的研究 在公司金融的实证研究中 我们的终极目标是建立变量间的因果关系 我们需要识别因果关系 来检验理论 评价政策效果 或作出预测 目前该领域的研究大部分是使用了STATA和R这两种工具来开展研究的 其实作
  • 亲测可用:opencv图片序列转视频

    亲测可用 glob函数可以遍历文件夹下文件 完毕后可在项目目录下生成output avi视频 可以稍作改进 转换的时候显示当前转换图像 include
  • 网络安全专业毕业设计最新最全选题精华汇总-持续更新中

    前言 大家好 这里是海浪学长毕设专题 大四是整个大学期间最忙碌的时光 一边要忙着准备考研 考公 考教资或者实习为毕业后面临的升学就业做准备 一边要为毕业设计耗费大量精力 学长给大家整理了网络安全专业最新精选选题 如遇选题困难或选题有任何疑问
  • 将语雀文档迁移到飞书

    前言 我爬虫课程的文字版内容沉淀在语雀的知识库中 一开始感觉很不错 随着课程一直在卖 很快就超过了200人的限制 我已经是个人版中最高级的会员了 但语雀知识库的协作人数依旧限制在200人 即花钱无法解决问题 先说一下我的需求 我需要一个可以
  • 深度学习之实现图像数据增强

    深度学习之实现图像数据增强 前言 数据增强的意思就是让数据量增多 对于深度学习来说 大的数据量可以训练出更好的深度学习模型 在图像增强方面 我们常用的手段如下 旋转 翻转 缩放 平移 尺度变换 对比度变换 噪声扰动 颜色变换 1 使用ten
  • What the f*ck Python!(中文翻译版)

    What the f ck Python From https github com leisurelicht wtfpython cn 一些有趣且鲜为人知的 Python 特性 Python 是一个设计优美的解释型高级语言 它提供了很多能
  • SPFA 算法模板

    SPFA 代替 Dijkstra 计算最短路 题目 题目链接 题解 SPFA 一般时间复杂度为 O m O m O m 最坏情况下为 O
  • CNN人脸识别项目(dlib+opencv)

    CNN人脸识别 获取数据集 读取数据集 数据预处理 建立模型进行预训练 对图片进行人脸进行检测并进行可视化 总结 思路 一个CNN人脸识别项目首先必不可少的是数据集 获取的方式有网站数据库 PubFig Public Figures Fac
  • ORACLE查询删除重复记录三种方法

    比如现在有一人员表 表名 peosons 若想将姓名 身份证号 住址这三个字段完全相同的记录查询出来 复制代码代码如下 select p1 from persons p1 persons p2 where p1 id lt gt p2 id
  • 如何实现Java的JDBC编程(基本概念,驱动包安装)

    Java的JDBC编程 这里写目录标题 Java的JDBC编程 1 概念 2 安装驱动包 3 实现JDBC编程 1 概念 何为 JDBC编程 就是通过Java代码来操作数据库 咱们学数据库 无论是命令行 还是图形化界面 都不是开发中的主流使
  • 测试工作中一定要学会做业务总结

    前言 在日常的测试工作中 不知道大家是否会有梳理自己测试业务的习惯 我个人觉得这个事情是值得做的 最好培养成一个习惯 另外一定要依托于业务价值来实现自己的变现 梳理被测业务 就是一种很好的自我提升方式 测试工作中一定要学会业务总结 一 为什
  • JavaWeb之xml学习笔记一(约束初步使用)

    html和xml的不同点 元素和属性 html中的元素和属性都是预先设定的 而xml中没有预想设定的元素和属性 xml是可扩张的标记语言 标记可以用户自定义元素和属性 使用目的 html使用来显示界面的 注重的是外观和功能 而xml是用来传