xml中该使用属性还是元素
XML 中没有规定哪些必须放在属性或者子元素,因此使用哪种方式都是可以实现的。这取决于个人的经验和喜好。在可以使用元素也可以使用属性的两选一的情况下,个人更倾向于使用子元素。主要理由如下:
1. 属性不易扩展,只能支持简单数据类型。如果要定义的数据项将来可能扩展为复杂数据对象时,则应毫不犹豫地使用子元素。
2. 子元素在XML文档中更容易解析。
3. 相对属性定义方式,用元素来定义会显的更正式更重要。
4. 人看起来,用元素定义的文档比属性定义的文档更好理解。
什么时候使用属性来定义信息呢?个人认为,一个XML文档中,要对信息进行分类,一类是以交换为目的的数据(这些数据可能会被重新使用和修改),一类是以展现或辅助交换为目的的数据(这类数据重要程度不高)。如果是前者,则使用元素来定义;如果是后者,则使用属性来定义。另外,如果信息的数据类型是原子数据类型,如:令牌类型等,这种类型不可能再有扩展,因此可以使用属性来定义。
国外文章给出的参考意见是:
1. 如果这个信息是可以用元素来定义清楚的,则使用元素方式来定义。
2. 如果这个信息命名对于一个元素来说,最终可能出现多个,则使用元素来定义。
3. 如果这个信息在DTD中被要求作为一个明确的属性类型,如:ID、IDREF, 或 ENTITY,则使用属性来定义。
4. 如果这个信息可能含有空格时,使用元素来定义。
另外,元素或属性命名时,如果有多个词组合,则词之间使用"_"连接符。
xml中该使用属性还是元素的更多相关文章
- XML中的DOCTYPE属性
一.先来两个小例子 内部dtd将standalone设为真. <?xml version="1.0" standalone="yes"?> < ...
- Android自己定义控件而且使其能够在xml中自己定义属性
为什么要自己定义View android开发中自己定义View的优点是显而易见的.比方说以下的这个顶部导航,它被设计出如今应用的每一个界面,但每次的内容却不尽同样.我们不能在每一个layout资源中都 ...
- jboss:在standalone.xml中设置系统属性(system-properties)
就象在.net的web应用中,可以在web.config中设置appSettings一样,jboss的standalone.xml中也可以由开发人员自行添加系统属性,用法如下: </extens ...
- 修改css样式+jq中的效果+属性操作+元素操作
:checked 选框选中的 一.修改css样式: 1.参数只写属性名,则返回属性值 $(this).css( ' color '); //300px 2.参数是属性名,属性值,逗号分隔,是 ...
- 使用dom4j工具:获取xml中的标签属性(三)
package dom4j_read; import java.io.File; import java.util.List; import org.dom4j.Attribute; import o ...
- SqlMapConfig.xml中的setting属性设置
<settings cacheModelsEnabled="true" lazyLoadingEnabled="false" en ...
- SqlMapConfig.xml中的setting属性 Ibatis mybatis
<settingscacheModelsEnabled="true"lazyLoadingEnabled="false"enhancementEnable ...
- Struts2.xml中result type属性说明
在struts2配置XML里,result中type属性有以下几种: 1.dispatcher:服务器跳转到前台,后面跟着可以是JSP.htm等等前台页面,默认是这种. 2.redirect:客户端跳 ...
- struts2.xml 中result type属性说明
chain 用来处理Action链,被跳转的action中仍能获取上个页面的值,如request信息. com.opensymphony.xwork2.Acti ...
随机推荐
- python SMTP 发送邮件
#!/usr/bin/env/python # -*- coding: utf-8 -*- # @Time : 2018/11/19 9:56 # @Author : ChenAdong # @Ema ...
- LeetCode题解之Pascal's Triangle II
1.题目描述 2.题目分析 题目要求返回杨辉三角的某一行,需要将杨辉三角的某行的全部计算出来. 3.代码实现 vector<int> getRow(int rowIndex) { ) ,) ...
- 关于innodb mtr模块
mtr (mini-transaction)微事务 mtr作用 mtr模块主要保证物理操作的一致性和原子性 1 一致性:通过读写锁来保证 2 原子性:涉及到的物理更新,都记入redo日志 mtr何时使 ...
- 运维利器万能的 strace
strace是什么? 按照strace官网的描述, strace是一个可用于诊断.调试和教学的Linux用户空间跟踪器.我们用它来监控用户空间进程和内核的交互,比如系统调用.信号传递.进程状态变更等. ...
- Excel表设置加密
如果你是从事会计或者人事等数据敏感岗位时,有时手上的电子表格不想被其他人浏览或者增删时,可以给表设置一个密码,这样就安全了. 具体操作如下:(以2007版本为例) 01.把需要加密的文件另存为 02. ...
- python的学习之路day2
1.什么是常量: 常量在程序中是不变的量 但是在python中所有的变量都可以改 注意:为了防止区分错误,所以python中常量使用大写命名 例如: MYSQL_CONNECTION = '192.1 ...
- 网站如何接入第三方登录,微信登录和QQ登录:注册认证篇
第三方登录平台接入 (QQ\微信登录) QQ登录接入 第一步成为QQ应用开发者,审核期限七天 一.所需材料 1.公司注册相关信息 2.营业执照扫描件 微信登录接入 第一步成为微信开发平台开发者,认证费 ...
- 百度地图Key的设置方法
一.为什么要设置百度Key 万能地图下载器提供了百度POI的下载功能,但由于本软件用户群极大,会导致一天之内访问量超出300万次以上而无法继续下载. 因此,当POI下载不成功能,用户可以自己申请百度地 ...
- PHP实现微信发红包功能2
<?php class wxPay { //配置参数信息 const SHANGHUHAO = "1430998xxx";//商户号 const PARTNERKEY = & ...
- Azkaban学习之路 (一)Azkaban的基础介绍
一.为什么需要工作流调度器 1.一个完整的数据分析系统通常都是由大量任务单元组成: shell 脚本程序,java 程序,mapreduce 程序.hive 脚本等 2.各任务单元之间存在时间先后及前 ...