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 ...
随机推荐
- Prometheus Node_exporter 详解
Basic CPU / Mem / Disk Info https://www.cnblogs.com/qianyuliang/p/10479515.html Basic CPU / Mem / Di ...
- web.config中的InProc模式 与 StateServer模式[转]
开发asp.net应用时,修改web.config中的SessionState节点. <sessionState mode="StateServer" stateConnec ...
- LUA 运算笔记
循环 比如要实现这样的一个For for(int i=10;i>1;i—) { print(i) } lua的for循环 转换成LUA for i=10,1,-1 do print(i) end ...
- 关于Javascript的des加密
参考文章:https://www.cnblogs.com/MSMXQ/p/4484348.html 需要先下载CryptoJS文件,然后引入其中的两个文件,可以在github中找到. 直接上代码 &l ...
- 4.Dubbo2.5.3集群容错和负载均衡
转载请出自出处:http://www.cnblogs.com/hd3013779515/ 1.集群容错和负载均衡原理 各节点关系: 这里的Invoker是Provider的一个可调用Service的抽 ...
- Spring之强制修改某个方法的行为(Arbitrary method replacement)
A less commonly useful form of method injection than Lookup Method Injection is the ability to rep ...
- oracle 查询SQL 的执行速度
SELECT SE.SID, OPNAME, TRUNC(SOFAR / TOTALWORK * 100, 2) || '%' AS PCT_WORK, ELAPS ...
- JAVA框架Struts2(二)
一:Struts2执行流程: 1)编写页面,点击超链接,请求提交到服务器端. 2)请求先经过Struts2核心过滤器(StrutsprepareAndexectuterfilter). 3)过滤器的功 ...
- git回滚命令reset、revert的区别
##使用git,总有一天会遇到下面的问题: (1)改完代码匆忙提交,上线发现有问题,怎么办? 赶紧回滚. (2)改完代码测试也没有问题,但是上线发现你的修改影响了之前运行正常的代码报错,必须回滚. 所 ...
- grpc & pb 环境配置
grpc 官方中文文档:http://doc.oschina.net/grpc?t=60140 grpc github仓库:https://github.com/grpc/grpc protobuf ...