Thinking XML: 创建 XML 的好建议
来源:互联网 发布时间:2008-05-29 11:25:00
XML 的使用越来越广泛,但是很多 XML 的结构并不好。即便结构良好,也常常设计得很糟,使得处理和维护非常困难。而大部分用于 XML 的基础结构使问题更加恶化。于是出现了关于 XML 最佳实践的公开讨论,比如 Henri Sivonen 的文章“HOWTO Avoid Being Called a Bozo When Producing XML”。Uche Ogbuji 经常在 IBM developerWorks 上讨论 XML 最佳实践,这里他提出了在这些文章中讨论的要点。
几年来我一直在本专栏和其他系列文章中讨论 XML 最佳实践。其他人,比如和我同行的专栏作家 Elliotte Rusty Harold 也谈到这个问题。参加 XML 设计原则讨论的 XML 专家越好越好,这样社区就会对在不同层次上采用 XML 的开发人员提供一致的建议。本文将结合最新和过去的文章,更详细地介绍了 XML 最佳实践。
不再有笨蛋
Henri Sivonen 撰写了一篇有用的文章“HOWTO Avoid Being Called a Bozo When Producing XML”(请参阅参考资料)。他采用了基于 XML 的 Web 提要格式(如 RSS 和 Atom)的观点,提出了用名称空间生成结构良好的 XML 应该做和不应该做哪些事情的指南。正如他在简介中所说的:
有些开发人员似乎认为以编程方式生成 XML 而保持结构良好非常困难(如果不是不可能的话),另一些开发人员却能够做到这一点,并奇怪其他人为什么如此无能。我假设没有人愿意显得无能或者被点名。因此,我希望下列建议能够帮助开发人员从第一类人转变成第二类人。
Henri 给出的第一条建议是“不要将 XML 看作是文本格式”,我认为这是一条危险的建议。当然其基本观点是正确的 —— 不能像简单的文本文档那样随心所欲的生成和编辑 XML,但是这种要求适用于所有有结构的文本格式。但是,说 XML 不是文本就背弃了 XML 一个最重要的特点,而这点在规范的 XML 定义中被奉为圭臬。(“文本对象是结构良好的 XML 文档[如果符合本规范]”。) Henri 的提法也让人糊涂,因为有关于 XML 文本的技术定义,大致上是将它解释为 XML 的字符序列。文本不仅仅是叶子元素或者属性中的主要成分 —— 技术上称这类文本为字符数据。文本还是所有 XML 实体的主要成分,因此说 XML 不是文本是自相矛盾的。我认为强调 XML 和开发人员已经熟悉的文本格式的区别会更有意义。
猜你喜欢
- 本文实例讲述了Python实现在tkinter中使用matplotlib绘制图形的方法。分享给大家供大家参考,具体如下:一. 代码:# co
- Tensor.to(device)和model.to(device)的区别区别所在使用GPU训练的时候,需要将Module对象和Tensor
- 开发过程中,props 的使用有两种写法:// 字符串数组写法const subComponent = { props: ['nam
- 前言在此之前,我认为 Python 的类型提示就是一个花瓶,看起来好看,但并没有实质的作用,因为即使类型写错了,或者传错了,程序仍然可以运行
- 内容简介展示如何给图像叠加不同等级的椒盐噪声和高斯噪声的代码,相应的叠加噪声的已编为对应的类,可实例化使用。以下主要展示自己编写的:加噪声的
- 1、说明当确定没有异常后,还需要做一些事情可以使用else语句。注意:try中没有异常,else之后的代码才会被执行。2、实例while T
- 在使用 peewee 框架时,默认是不会出现日志消息的。from peewee import Model, CharField, DateT
- 本文实例讲述了Python常见数据结构之栈与队列用法。分享给大家供大家参考,具体如下:Python常见数据结构之-栈首先,栈是一种数据结构。
- 前言学习Python中,总想做个图形界面,找来找去,找到了tkinter。练习内容:图形界面中,点击按钮后,利用弹出对话框选择文件(或文件夹
- 首先给大家介绍ThinkPHP函数详解:M方法M方法用于实例化一个基础模型类,和D方法的区别在于:1、不需要自定义模型类,减少IO加载,性能
- 声明:请事先到官网下载echarts,另外本文引用了adminlte模板构建前台页面views:<!-- /.row --> &
- 分析我们将添加、插入、删除定义为:添加 : 在字符串的后面或者前面添加字符或者字符串插入 : 在字符串之间插入特定字符在Python中,字符
- 规则:open(file_name[,access_mode][,buffering])参数说明file_name:、文件路径+文件名称,加
- 我就废话不多说了,大家还是直接看代码吧!import matplotlib.pyplot as pltimport numpy as npf
- 在备份数据库的时候,数据表中可能存在这样的值array('a'='b','c'='d
- K-means算法介绍简单来说,K-means算法是一种无监督算法,不需要事先对数据集打上标签,即ground-truth,也可以对数据集进
- 前言之前已经讲述了一些关于;python;获取基金的一些信息,最近又有了一些新发现,和大家分享一下,这个是非常重要的内容,非常重要的内容。这
- 话不多说,附上源码,仅供大家参考<!DOCTYPE html><html xmlns="http://www.w
- 利用GDAL库对tif影像进行读取 示例代码默认波段为[B、G、R、NIR的顺序,且为四个波段]import gdaldef readTif
- 我就废话不多说了,大家还是直接看代码吧~package mainimport ( "net/http")func mai