XML:基础

一、语法

基本结构:

实例一:

XML 复制代码
<?xml version="1.0" encoding="ISO-8859-1"?>
<note data="2008/08/08">
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
</note>

XML 文档编写前要使用文档申明,声明要给出具体编码,必须有根元素,其元素必须有闭标签,且对大小写敏感。XML元素的属性名也可以自定义,但属性值必须要用引号括起来。

要注意的是元数据(有关数据的描述)应当存储为属性,而数据本身应当存储为元素,尽量减少使用属性,因为属性不易拓展。

实体引用:

实例二:

XML 复制代码
<?xml version="1.0" encoding="ISO-8859-1"?>
<note data="2008/08/08">
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<message>if salary &lt; 1000 then</message>
<body>Don't forget the meeting!</body>
</note>

在XML中如果把"<"符号放在元素中,会被解释器当成新的元素开始,为了避免这个错误,用实体引用来代替 "<" 字符,以下是5个预定义的实体引用。

|---------|--------|--------|
| 实体 | 符号 | 名称 |
| &lt; | < | 小于 |
| &gt; | > | 大于 |
| &amp; | & | 和号 |
| ' | ' | 单引号 |
| &quot; | " | 引号 |

二、命名规则

XML元素命名有以下规则:

  • 不能以数字或标点符号开头
  • 不能以字符xml开头
  • 不能包含空格
  • 使名称具有描述性,可以使用下划线的命名方式

三、 命名冲突

当两个不同文档使用相同的元素名称时,就会发送命名冲突。

例:

文档一:

XML 复制代码
<table>
   <tr>
   <td>Apples</td>
   <td>Bananas</td>
   </tr>
</table>

文档二:

XML 复制代码
<table>
   <tr>
   <td>Apples</td>
   <td>Bananas</td>
   </tr>
</table>

当两个xml文档被一起使用时候,table标签则会发生冲突。

1.前缀

通过添加前缀避免冲突

文档一:

XML 复制代码
<h:table>
   <h:tr>
   <h:td>Apples</h:td>
   <h:td>Bananas</h:td>
   </h:tr>
</h:table>

文档二:

XML 复制代码
<h:table>
   <h:tr>
   <h:td>Apples</h:td>
   <h:td>Bananas</h:td>
   </h:tr>
</h:table>

2.命名空间(xmlns属性)

语法:xmlns:namespace-prefix="namespaceURI",其中namespace-prefix是自定的,可以不写,不写代表默认命名空间,namespaceURI是一个可访问的url,具体内容为XML Schema定义,用来定义xml文档的结构,以此防止冲突。

文档一:

XML 复制代码
<table xmlns="http://www.w3.org/TR/html4/">
   <tr>
   <td>Apples</td>
   <td>Bananas</td>
   </tr>
</table>

文档二:

XML 复制代码
<table xmlns="http://www.w3school.com.cn/furniture">
   <name>African Coffee Table</name>
   <width>80</width>
   <length>120</length>
</table>
相关推荐
freewlt4 小时前
前端性能优化实战:从 Lighthouse 分数到用户体验的全面升级
前端·性能优化·ux
0xDevNull4 小时前
Java反射机制深度解析:从原理到实战
java·开发语言·后端
小小亮014 小时前
Next.js基础
开发语言·前端·javascript
华洛4 小时前
我用AI做了一个48秒的真人精品漫剧,不难也不贵
前端·javascript·后端
华科易迅4 小时前
MybatisPlus增删改查操作
android·java·数据库
standovon4 小时前
Spring Boot整合Redisson的两种方式
java·spring boot·后端
Novlan14 小时前
我把 Claude Code 里的隐藏彩蛋提取出来了——零依赖的 ASCII 虚拟宠物系统
前端
IAUTOMOBILE5 小时前
Python 流程控制与函数定义:从调试现场到工程实践
java·前端·python
hutengyi5 小时前
PostgreSQL版本选择
java
皮皮林5515 小时前
重磅!JetBrains 正式发布全新的 AI 开发工具,定名 AI IDE AIR
java·intellij idea