XML的语法、结构以及相关的一些技术(4)
发布时间:2007-10-23 07:27:00
■Namespaces
考虑一下,当我们建立XML应用的时候,会为具体的行业应用创建特定的DTD,规定可用的元素。有时会出现下面情况——两个同名的元素在不同的地方可能会有不同的含义。例如,我们定义〈title〉这个标记,在书店应用中,这个标记中的字符含义是书的名称,而在人事部门中,这个标记中的字符含义却是人的称谓、头衔。如果我们写一个包含书名、作者、作者身份等信息的XML文件,将在书名和作者身份两个地方用到同样的〈title〉标记,但它们有不同的含义,计算机程序无法分辨哪一个是书名,哪一个是作者身份。这样就给我们的自动化处理带来了问题,这就是Namespaces要解决的问题。
Namespaces的概念非常直接——对于每一套特定应用的DTD,给它一个独一无二的标志来代表,如果在XML文件中使用DTD中定义的元素,需将DTD的标志和元素名、属性连在一起使用,相当于指明了元素来自什么地方,这就不会和其他同名元素混淆(像我们的电话号码,两个城市可能存在相同的号码,但是我们在前面用区号将它限定了,一个地方的区号在一个国家中是独一无二的)。在XML中,采用现成的、在全球范围唯一的“域名”作为Namespaces,即用URL作为XML的Namespaces。前面我们学习XSL的时候,实际上就接触到了Namespaces,XSL文件中的标记名称前面都有一个“xsl:”,实际上这就是XSL中元素的Namespaces。声明语句就是:〈xsl:stylesheet xmlns:xsl="http://www.w3.org.TR.WD-xsl"〉,后面的xmlns:xsl="......"。其中,声明中的xsl称为前置字符串,在文件中引用元素时要加上前置字符串,如:〈xsl:templed〉。
例:
〈?xml version="1.0" encoding="GB2312"?〉
〈c:客户名单 xmlns:c="http://www.aaa.com/custom.dtd"〉
xmlns:职工="http://www.aaa.com/employee.dtd〉
〈c:客户〉
〈c:姓名〉张三〈/c:姓名〉
〈c:电话〉028-6666666〈/电话〉
〈c:接待人〉
〈职工:姓名〉李四〈/职工:姓名〉
〈职工:电话〉5555555〈/职工:电话〉
〈/c:接待人〉
〈/c:客户〉
.......
这个例子在前面定义了两个Namespaces——c:和职工:。在应用元素时,前面都加了特定的Namespaces。那么应用程序在读到同名元素,如:〈姓名〉、〈电话〉时,就能够区分哪一个是客户姓名、电话,而哪一个又是本单位职工的姓名、电话了。
利用Namespaces,我们还可以在XML文件中直接利用HTML的标记,不使用Xlink或Xpionter,也让XML文件具有超级链接、显示图片的功能。在使用HTML标记之前,必须声明它的Namespaces。下面这个例子就是XML和HTML的混合使用。
例:
〈?xml version="1.0" encoding="GB2312" ?〉
〈?xml-stylesheet href="first.css" type="text/css" ?〉
〈data xmlns:HTML="http://www.w3.org/TR/XHTM1"〉
〈book〉
〈title〉XML入门精解〈/title〉
〈HTML:a href="mailto:lionliao@yeah.net"〉
〈author〉作者:张三〈/author〉
〈/HTML:a〉
〈picture〉
〈HTML:img src="zhangsan.jpg" width="80" height="80"〉〈/HTML:img〉
〈/picture〉
〈price unit="人民币"〉价格:$20.00〈/price〉
〈content〉
〈HTML:a href="http://www.cbi.com"〉点击查看主要内容〈/HTML:a〉
〈/content〉
〈/book〉
〈/data〉
注意:在XML中使用HTML时要严格遵守XML的语法规定,元素必须正确关闭。
通过CSS或XSL可将这个XML文件显示出来,如图1所示。


猜你喜欢
- 首先要注册一个账号密码,通过账号密码登录,并且滑块验证,自动输入搜索关键词,进行跳转翻页爬取数据,并保存到Excel文件中。代码运行时,滑块
- 代码如下所示:import osimport requestsimport datetimefrom Crypto.Cipher impor
- 一.背景在现在的网站中,接入的渠道是越来越多了,技术也是越来越先进,WAP, SMS,EMAIL, 传统的Web, Socket等等,如果连
- 本文是OpenCV图像视觉入门之路的第10篇文章,本文详细的在图像上面进行了图像均值滤波、方框滤波 、高斯滤波、中值滤波、双边滤波、2D卷积
- 本文介绍了如何在Linux下安装MySQL8.0,供大家参考,具体内容如下准备工作:mysql8.0 rpm文件测试工具(比如 idea的d
- 一、先来看看效果接口请求返回的数据:二、官方登录流程图三、小程序登录流程梳理:1、小程序端调用wx.login2、判断用户是否授权3、小程序
- 背景之前是用的是typora来写的文章,最近typora最近开始收费了,所以就不想用了,于是找到了一个替代品MarkText,感觉跟typo
- 什么是粘包问题最近在使用Golang编写Socket层,发现有时候接收端会一次读到多个数据包的问题。于是通过查阅资料,发现这个就是传说中的T
- 我就废话不多说了,大家还是直接看代码吧~package main import ("fmt""time&quo
- 常见的SQL问题:◆选择重复,消除重复和选择出序列有例表:empemp_no name age001 Tom 17002 Sun 14003
- flags参数re.I IGNORECASE 忽略字母大小写re.L &nb
- 程序中常常需要复制一个对象, 按思路应该是这样的a = [1, 2, 3]b = a# [1, 2, 3]print b 已经复制好了,但是
- 前言诶?这有一个按钮(~ ̄▽ ̄)~,这是一个在html中实现的具有金属质感并且能镜面反射的按钮~效果电脑效果手机效果说明主要思路是使用 na
- ASP正则表达式,RegExp对象提供简单的正则表达式支持功能。RegExp对象的用法: Function RegExpTest(
- 输入命令jupyter notebook --generate-config可以看到此时Jupyter Notebook的默认目录找到对应路
- 1. 前言邮件,作为最正式规范的沟通方式,在日常办公过程中经常被用到我们都知道 Python内置了对 SMTP 的支持,可以发送纯文本、富文
- 本案例使用 Jupyter Notebook进行案例演示,数据集为NBA球员信息数据集。本项目将进行完整的数据分析演示。1. 数据介绍数据集
- 项目简介之前学python的时候 写了个游戏来练手 用的是 pygame 没有别的依赖只用了一两百行的代码就实现了 整体来说功能并不算完整项
- 看代码吧~class ConvNet(nn.module): def __init__(self, num_cla
- 一个简单的JS显示日期代码,可以显示星期几<script type="text/javascript">fu