热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

XML简易教程之二

文档格局的排错:我妈妈_的清单中有数十条菜谱,甚至数百条。假如产生一个致命错误,排错将非常艰苦-你将一行一行地寻找丧失的标记符。假如应用几层嵌套,发明错误将很艰苦。

文档格局的排错:我妈妈_的清单中有数十条菜谱,甚至数百条。假如产生一个致命错误,排错将非常艰苦 - 你将一行一行地寻找丧失的标记符。假如应用几层嵌套,发明错误将很艰苦。

但是可以找到很好的帮助。分析器 - XML代码和报告格局错误的利用程序可以在网上免费得到。其中最好的是Lark,它的作者是由Tim Bray - XML规范的技巧编纂和极力宣传者,地球上最聪慧的人之一。

我用Lark分析下面的代码。留心'chocolate chips'和它的封闭标记符呈现在 标记符中的地位有错误:

Carol Schmidt

Chocolate Chip Bars

Dinner

Dessert

2/3 C butter

2 C brown sugar

1 tsp vanilla

1 3/4 C unsifted all-purpose flour

1 1/2 tsp baking powder

1/2 tsp salt

3 eggs

1/2 C chopped nuts

2 cups (12-oz pkg.) semi-sweet choc.

chips

Preheat overn to 350 degrees. Melt butter;

combine with brown sugar and vanilla in large mixing bowl.

Set aside to cool. Combine flour, baking powder, and salt; set aside.

Add eggs to cooled sugar mixture; beat well. Stir in reserved dry

ingredients, nuts, and chips.

Spread in greased 13-by-9-inch pan. Bake for 25 to 30 minutes

until golden brown; cool. Cut into squares.

下面是分析器返回的成果:

Error Report

Line 17, column 22: Encountered expected

... assumed

Line 18, column 36: Encountered with no start-tag.

有了这种信息,找到错误将不会成为标题。那么XML文件的有效性是指什么呢?

实现有效性终极我们将在组织良好的XML文档中参加信息。实际上,我们有很多事要做 - 仍然有危机埋伏 - 固然XML文件组织良好,
但还可能丧失要害信息。看看下面的例子:


Carol Schmidt
Chocolate Chip Bars
Dinner Dessert

Melt butter; combine with, etc. ...

这份菜谱中没有包含ingredient,而且由于它组织良好,所以Lark分析器也不会发明标题。治理过哪怕是最和气的数据库的人都知道我们人类常犯的错误:假如有机会,我们会丢掉要害信息并参加无用的空话。这就是为什么XML的发明者引进DTD - 文档类型定义(Document Type Definition)。DTD供给了一种保证XML或多或少是你所想的方法。

让我们看看用在菜谱上的一个DTD。



]>
这些代码起初看起来不够友爱,但当把它分解时却能看出其中的意义。让我们具体说明之:

这行是说,包含在方括号中的是具有根元素的某个文档的DTD。如我们以条件到的,根元素包含所有其它元素。

这行定义了标记符。圆括号是说其中的四种标记符必需按照次序呈现在标记符中。

这行需要具体的说明。我定义了以下的结构:

Here the meal name is mandatory
One course name may appear, but it is not
mandatory


我这样做是由于,按照我的想法,午餐不必定特定某道菜,但是晚餐可能要指出开胃食品、主菜和餐后甜点。通过指定#PCDATA - 表现经过火析的字符数据(即非二进制数据)来实现这个功效。这里,#PCDATA是文本 - 例如,“dinner”。

'course'后面的问号表现0或1对标记符将呈现在标记符内。

现在让我们看看下一行:

这里的加号表现至少有一对标记符应呈现在标记符内。

我们感爱好的最后一行是:

我把sub_item*作为一项安全措施。除了请求每个item的文本之外,我盼看盘算每个item的内容的数目。星号是说在标记符中可以有子条目标数目。我不需要Chocolate Chip Bars菜谱的任何子条目,但是当它的组成成分很复杂时就用得着。

现在让我们把这些放在一起看看我们能得到什么。

DTD的完整例子
下面是一个完整的例子。我把另一个菜谱参加文件内,并为DTD做了注释。可以留心到我在第二个菜谱中用到子条目。



]>
 




Carol Schmidt
Chocolate Chip Bars
Dinner
Dessert


2/3 C butter
2 C brown sugar
1 tsp vanilla
1 3/4 C unsifted all-purpose flour
1 1/2 tsp baking powder
1/2 tsp salt
3 eggs
1/2 C chopped nuts
2 cups (12-oz pkg.) semi-sweetchoc. chips


Preheat oven to 350 degrees. Melt butter;
combinewith brown sugar and vanilla in large mixing bowl.
Set aside to cool. Combine flour, baking powder, andsalt;
set aside.Add eggs to cooled sugar mixture; beat well.
Stir in reserved dry ingredients, nuts, and chips.
Spread in greased 13-by-9-inch pan.
Bake for 25 to 30minutes until golden brown; cool.
Cut into squares.



Pasta with tomato Sauce
Dinner
Entree


1 lb spaghetti

推荐阅读
  • 作为140字符的开创者,Twitter看似简单却异常复杂。其简洁之处在于仅用140个字符就能实现信息的高效传播,甚至在多次全球性事件中超越传统媒体的速度。然而,为了支持2亿用户的高效使用,其背后的技术架构和系统设计则极为复杂,涉及高并发处理、数据存储和实时传输等多个技术挑战。 ... [详细]
  • Sapphire 测试网上线:首个支持 EVM 的隐私 ParaTime 环境
    Sapphire 测试网上线:首个支持 EVM 的隐私 ParaTime 环境 ... [详细]
  • 本文推荐了六款高效的Java Web应用开发工具,并详细介绍了它们的实用功能。其中,分布式敏捷开发系统架构“zheng”项目,基于Spring、Spring MVC和MyBatis技术栈,提供了完整的分布式敏捷开发解决方案,支持快速构建高性能的企业级应用。此外,该工具还集成了多种中间件和服务,进一步提升了开发效率和系统的可维护性。 ... [详细]
  • 本文探讨了如何在 Google Sheets 中通过自定义函数实现 AJAX 调用。具体介绍了编写脚本的方法,以便在电子表格中发起 AJAX 请求,从而实现数据的动态获取与更新。这种方法不仅简化了数据处理流程,还提高了工作效率。 ... [详细]
  • Spring Boot 实战(一):基础的CRUD操作详解
    在《Spring Boot 实战(一)》中,详细介绍了基础的CRUD操作,涵盖创建、读取、更新和删除等核心功能,适合初学者快速掌握Spring Boot框架的应用开发技巧。 ... [详细]
  • 深入解析JWT的实现与应用
    本文深入探讨了JSON Web Token (JWT) 的实现机制及其应用场景。JWT 是一种基于 RFC 7519 标准的开放性认证协议,用于在各方之间安全地传输信息。文章详细分析了 JWT 的结构、生成和验证过程,并讨论了其在现代 Web 应用中的实际应用案例,为开发者提供了全面的理解和实践指导。 ... [详细]
  • 本文作为“实现简易版Spring系列”的第五篇,继前文深入探讨了Spring框架的核心技术之一——控制反转(IoC)之后,将重点转向另一个关键技术——面向切面编程(AOP)。对于使用Spring框架进行开发的开发者来说,AOP是一个不可或缺的概念。了解AOP的背景及其基本原理,对于掌握这一技术至关重要。本文将通过具体示例,详细解析AOP的实现机制,帮助读者更好地理解和应用这一技术。 ... [详细]
  • 结语 | 《探索二进制世界:软件安全与逆向分析》读书笔记:深入理解二进制代码的逆向工程方法
    结语 | 《探索二进制世界:软件安全与逆向分析》读书笔记:深入理解二进制代码的逆向工程方法 ... [详细]
  • 中国餐饮连锁加盟十大热门品牌榜单(全国最具人气的加盟选择)
    在新餐饮时代背景下,餐盟严选对全国餐饮连锁加盟品牌进行了全面梳理,发现众多品牌已积极调整策略,以适应市场发展需求。面对不断变化的市场环境,餐饮从业者应如何精准把握趋势,选择适合自己的加盟项目,成为当前的重要课题。 ... [详细]
  • 如何在Windows 7旗舰版中高效打开CHM帮助文件
    如何在Windows 7旗舰版中高效打开CHM帮助文件 ... [详细]
  • 本文详细探讨了Java集合框架的使用方法及其性能特点。首先,通过关系图展示了集合接口之间的层次结构,如`Collection`接口作为对象集合的基础,其下分为`List`、`Set`和`Queue`等子接口。其中,`List`接口支持按插入顺序保存元素且允许重复,而`Set`接口则确保元素唯一性。此外,文章还深入分析了不同集合类在实际应用中的性能表现,为开发者选择合适的集合类型提供了参考依据。 ... [详细]
  • 在Unity中进行3D建模的全面指南,详细介绍了市场上三种主要的3D建模工具:Blender 3D、Maya和3ds Max。每种工具的特点、优势及其在Unity开发中的应用将被深入探讨,帮助开发者选择最适合自己的建模软件。 ... [详细]
  • C语言中按位取反与按位与运算符的使用方法及应用场景解析
    位运算是一种基于二进制的计算方式,在系统软件开发中经常用于处理二进制位的相关问题。C语言提供了六种位操作运算符,专门用于对整型数据(包括带符号和无符号的char、short等)进行操作。本文详细解析了按位取反和按位与运算符的使用方法及其典型应用场景,帮助开发者更好地理解和应用这些运算符。 ... [详细]
  • 微信支付授权目录配置详解及操作步骤
    在使用微信支付时,若通过WeixinJSBridge.invoke方法调用支付功能,可能会遇到“当前页面URL未注册”的错误提示,导致get_brand_wcpay_request:fail调用微信JSAPI支付失败。为解决这一问题,需要正确配置微信支付授权目录,确保支付页面的URL已成功注册。本文将详细介绍微信支付授权目录的配置步骤和注意事项,帮助开发者顺利完成支付功能的集成与调试。 ... [详细]
  • 在主从复制架构中,Bingo_MySQL 同步工具的应用与优化具有重要意义。为确保高效同步,建议使用相同或兼容的 MySQL 版本,并确保两台服务器位于同一局域网内,且网络连接畅通无阻。若无法 ping 通,请检查 IP 配置及防火墙设置,以保证网络连通性。此外,合理的配置参数和定期维护也是提升同步性能的关键因素。 ... [详细]
author-avatar
用户dvb51bjajs
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有