XML文档篇(二):认识 xsd 文档
xsobi 2025-01-08 18:17 15 浏览
前面介绍了基于 XML 的 DTD,详见:XML文档篇:认识DTD(一)。
今天再来分享一个它的替代者,XML Schema Definition(XSD),也是定义 XML 文档的合法构建模块,非常类似 XSD,也是应用程序本地化中常见的文档。
所以,我们来简单了解一下XML Schema Definition(XSD)。
在看本文前,请确保你已经:
- 了解XML是什么?
- 了解XML的元素、标签、文本、属性和实体;
- 对DTD有基本的认识。
如果不了解,可以点击对应的链接,查看我之前的分享。
01 XSD定义?
XML Schema 的作用是定义 XML 文档的合法构建模块。
其实真的定义跟XSD也差不多~
通过XSD我们可以验证XML是“合法”,同理,我们通过xsd也是为了验证XML是否“合法”。
在这里我用一个翻译包给大家看一下:
文件包里既有xml文档,又有一个 *.xsd 文档。如图1所示。
图1 翻译包截图
其实如果你在自己电脑中检索xsd的话,也会找到很多xsd文档,只不过你可能不知道而已。
比如我在我电脑里用Everything进行检索,就找到超多XSD文档,如图2 所示。
图2 在everything中检索xsd文档截图
OK,这是题外话,我们回到接收到的翻译包。如果打开这两个文档,如图3所示。
图3 XML原文和xsd文档对比
我们发现:
- XML中的元素名就是右侧XSD文档中定义好的,比如:
- XML第2行的根元素<Root>,是右侧XSD文档第3行的name属性值;
- XML第3行的元素<Customers>,是右侧XSD文档第6行的name属性值;
- XML第4行的元素<Customer>,是右侧XSD文档第9行的name属性值。
- 左侧XML的结构是按照右侧XSD定义的,比如:
- 在右侧XSD文档中,第一个根元素<xs:element>属性值Root,就是左侧的XML的根元素<Root>;
- 在右侧XSD文档中,第二行子元素<xs:element>属性值Customers,就是左侧的XML的<Root>的子元素<Customers>。
- 同理,<Customer>也是<Customers>的子元素。
- 左侧XML元素的数量是按照右侧XSD定义的,比如:
- 在右侧XSD文档中,第九行就说明了XML第4行的元素<Customer>,是可以出现0次-无数次的。
当然还有很多其它的发现~
对XML Schema来说,它可以:
- 定义文档中的元素名,元素的属性值
- 定义元素和属性的数据类型
- 定义各个元素的关系,哪个元素是子元素,哪些元素是兄弟元素
- 定义子元素的次序
- 定义子元素的数目等
所以说 XML Schema 比 XSD 更强大,而且据说很快会在大部分网络应用程序中取代 XSD。
02 XSD构成
图4 XSD文档
如图4所示,首先,XSD也是XML文档,所以结构是符合XML的文档结构:
- 第一行的<?xml version="1.0" encoding="utf-8" ?>是声明语句。
- 从第二行开始,<xs:schema>就是根元素<schema>元素。
- <schema>元素可包含属性。一个 schema 声明往往看上去类似这样:<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
- 第三行开始还有子元素<xs:element>、<xs:complexType>等。
我们看一下XSD的这个构成。
当然,我的原则还是:只认识这个文档,看看它有没有明显的错误,能进行译前分析就好了~
所以,写程序,不是我的初衷,更不是我的目的~
2.1 元素
在 XSD 中,元素依然是通过element来进行定义。语法如下:
<xs:element name="xxx" type="yyy"/>
其中:
- name的属性值 xxx,指元素名
- type的属性值 yyy,指元素的数据类型
所以,如图5所示,
- 在右侧xsd中(绿色方框)就定义了左侧XML的元素(红色方框)有:<CompanyName> <ContactName> <ContactTitle>等;
- 其中,
- 如蓝色椭圆所示,元素 <Customers> 是根元素<Root>的子元素;
- 如灰黑色椭圆所示,元素 <Customer> 是元素 <Customers> 的子元素;
图5 XSD的元素和各个元素之间的关系
更多关于XSD的元素和数据类型,你可以去网络上查找~
比如复合元素(complexType)是什么,在这个案例中,其实<Root>、<Customers>就是复合元素。
2.2 属性
在 XSD 中,属性通过 attribute 来进行声明。语法如下:
<xs:attribute name="xxx" type="yyy"/>
如图6所示,在右侧XSD中就声明了:
元素<ShipInfo>的属性是ShippedDate,其属性值(左侧XML文档的第65行)应该是日期时间数据类型,也就是在右侧第72行看到的dateTime。
图6 XSD属性声明
更多属性介绍你可以去网络上搜索啦~
2.3 其它
当然,其它内容xsd的介绍,大家感兴趣的话可以自行去网络上查找,比如:
通过sequence元素来表示子元素出现的顺序,每个子元素可出现 0 到任意次数。
图7 sequence元素
通过key元素来指定属性或元素值(或一组值)必须是指定范围内的键。
图8 key元素
当然还有其它的,我也不是程序猿,我只能看懂,所以我不班门弄斧了,大家需要去网络上自查啦~
如果你已经懂了XSD是什么,我们下篇继续讲XSD怎么翻译~
当然,听不懂也没关系,真的没关系,其实定义和构成也不是很重要~
但是我们是搞翻译的嘛!又不是搞编程的!
我只要知道文档怎么翻译,保证本地化的质量就好了!!
所以,我们下一篇文章讲方法论,讲XSD怎么翻译~。
好啦今天内容先到这里,再见啦~
- END -
转载来源:职业译员玩转翻译技术
关注微信公众号“语言服务行业”,“翻译技术教育与研究”,了解更多语言服务行业与翻译技术相关的资讯和洞察~
相关推荐
- CSS3 基础知识
-
相信大家也会浏览招聘网站的招聘要求,基本上每一家的找前端的要求都包含必须要精通CSS3。这次和大家来讲一下css3,在前端编程中,html,css,js分别被称之为前端编程中的骨,肉,魂。...
- 6 张图带你彻底搞懂分布式事务 XA 模式
-
XA协议是由X/Open组织提出的分布式事务处理规范,主要定义了事务管理器TM和局部资源管理器RM之间的接口。目前主流的数据库,比如oracle、DB2都是支持XA协议的。...
- 一文带你理解URI 和 URL 有什么区别?
-
当我们打开浏览器,要访问一个网站或者一个ftp服务器的时候,一定要输入一串字符串,比如:https://blog.csdn.net/...
- 传的神乎其神的数学思维,到底是什么?我觉得是分类、归纳和抽象
-
很多家长在咨询课程的时候都会说,我的孩子很一般,咱也不打算让他去考个什么奥数,就是提升一下孩子的数学思维,当然了,也有很多老师在做宣传的时候会说,自己十余年培优经验,能够提升孩子的数学思维,好像掌握了...
- 是什么组成了html?html组成元素有哪些?
-
网页html的组成是由:文字、图片、音频、视频、超链接组成。1-文字由什么组成?文字标签在“body”标签下,由文本标签比如:标题<h1>~<h6>,段落<p>&l...
- Vue入门-Vue简介
-
一、Vue概述在众多的语言排名中,JavaScript已经非常靠前,它是前端的核心编程语言,我们可以利用js开发动态效果的网页,也可以开发app,为了简化JavaScript的使用,在...
- javascript的简介与初学
-
1.为何学习JavaScript?JavaScript是web开发者必学的三种语言之一:HTML定义网页的内容----[制作网页]----简单枯燥CSS规定网页的布局和样式—[美化网页]...
- VUE简介
-
一.前后端分离既然我们在开发中使用前后端分离模式,也就是前端拿到后端的数据时怎么处理,怎么输出都有前端自己来实现,这样就需要写大量的js代码,而为了简化js的代码,就衍生出了很多的框架,比如jquer...
- 计算机网络的 166 个核心概念,你知道吗?
-
上回我整理了一下计算机网络中所有的关键概念,很多小伙伴觉得很有帮助,但是有一个需要优化的点就是这些概念不知道出自哪里,所以理解起来像是在云里穿梭,一会儿在聊应用层的概念,一会儿又跑到网络层协议了。针对...
- 什么是Web,Web服务是基于哪个协议
-
一、什么是WebWeb就是WorldWideWeb的缩写,称之为全球广域网,俗称WWW。对于用户来说它其实就是由多个网页组成在一起而形成的一种服务(Web)....
- 掌握这些CSS知识点,Coding如飞
-
许多入门学前端的同学,或是准备面试的同学都会去死记硬背一些前端知识点,笔者也是这么经历过来的,但却不推荐这种囫囵吞枣、不求甚解的学习方式,因为这样会走很多弯路,属于“应试”学习,我们更应该的是从基础到...
- 什么是前端,什么是后端?小程序是用哪个?
-
小程序是属于前端,开发小程序需要有web前端开发经验或是具有JavaScript语言基础。然后才能进一步学习小程序基础知识,如配置、样式、组件、生命周期等等知识技能,学习的重点还包括了微信小程序的各类...
- JavaScript概述,建议收藏
-
一、JavaScript概述1.学习JavaScript的原因a.客户端表单验证在网站中常见的会员注册页面中,我们填写注册信息时,如果某项信息格式输入错误(如密码长度不够等),表单页面将及时给出错误...
- WordPress是什么?如何安装?
-
WordPress是什么?WordPress是使用PHP语言开发的博客平台,用户可以在支持PHP和MySQL数据库的服务器上架设属于自己的网站。也可以把WordPress当作一个内容管理系统(CMS...
- 什么是 JavaScript?
-
本文首发自「慕课网」,想了解更多IT干货内容,程序员圈内热闻,欢迎关注!作者|慕课网精英讲师然冬...
- 一周热门
- 最近发表
- 标签列表
-
- grid 设置 (58)
- 移位运算 (48)
- not specified (45)
- 导航栏 (58)
- context xml (46)
- scroll (43)
- dedecms模版 (53)
- c 视频教程下载 (33)
- listview排序 (33)
- characterencodingfilter (33)
- getmonth (34)
- label换行 (33)
- android studio 3 0 (34)
- html转js (35)
- 索引的作用 (33)
- checkedlistbox (34)
- xmlhttp (35)
- mysql更改密码 (34)
- 权限777 (33)
- htmlposition (33)
- 学校网站模板 (34)
- textarea换行 (34)
- 轮播 (34)
- asp net三层架构 (38)
- bash (34)