XML学习

n XML (EXtensible Markup Language)可扩展标记语言, 是一种标记语言,很类似 HTML

n XML被设计用来传输和存储数据,而非显示数据。

n XML 标签没有被预定义。您需要自行定义标签。

n XML 被设计为具有自我描述性

XML 仅仅是纯文本

n XML 没什么特别的。它仅仅是纯文本而已。有能力处理纯文本的软件都可以处理 XML。

n 不过,能够读懂 XML 的应用程序可以有针对性地处理 XML 的标签。标签的功能性意义依赖于应用程序的特性。

n XML 是对 HTML 的补充。

n XML 不是对 HTML 的替代,理解这一点很重要。在大多数 web 应用程序中,XML 用于传输数据,而 HTML 用于格式化并显示数据。

n 对 XML 的最好的描述是:

XML 是独立于软件和硬件的信息传输工具。

n XML 不是 HTML 的替代。

n XML 和 HTML 为不同的目的而设计:

n XML 被设计为传输和存储数据,其焦点是数据的内容。

n HTML 被设计用来显示数据,其焦点是数据的外观。

n HTML 旨在显示信息,而 XML 旨在传输信息。

XML 文档形成了一种树结构,它从“根部”开始,然后扩展到“枝叶”。

n XML 使用了简单的具有自我描述性的语法:

<?xml version="1.0" encoding="ISO-8859-1"?> <note>

<to>George</to>

<from>John</from>

<heading>Reminder</heading>

<body>Don't forget the meeting!</body> </note>

n XML 文档必须包含根元素。该元素是所有其他元素的父元素。

n XML 文档中的元素形成了一棵文档树。这棵树从根部开始,并扩展到树的最底端。

XML 语法规则

n 所有 XML 元素都须有关闭标签

注:XML 声明没有关闭标签。这不是错误。声明不属于XML本身的组成部分。它不是 XML 元素,也不需要关闭标签。

n XML 标签对大小写敏感

Eg. 标签 <Letter> 与标签 <letter> 是不同的。

注:必须使用相同的大小写来编写打开标签和关闭标签:

Eg. <Message>这是错误的。</message>

<message>这是正确的。</message>

n XML 必须正确地嵌套

Eg. <b><i>This text is bold and italic</i></b>

正确嵌套的意思是:由于 <i> 元素是在 <b> 元素内打开的,那么 它必须在 <b> 元素内关闭。

n XML 文档必须有根元素

XML 文档必须有一个元素是所有其他元素的父元素。该元素称为根元素。

<root>

<child>

<subchild>.....</subchild>

</child>

</root>

n XML 的属性值须加引号

n 实体引用

Eg. <message>if salary < 1000 then</message>

发生错误,因为解析器会把它当作新元素的开始。为了避免错误,

用实体引用来代替 "<" 字符:<message>if salary &lt; 1000 then</message>

在 XML 中,有 5 个预定义的实体引用:

&lt; < 小于 &gt; > 大于

&amp; & 和号 &apos; ‘ 单引号

&quot; “ 引号

注:在 XML 中,只有字符 “<” 和 “&” 确实是非法的。大于号是合法的,

但是用实体引用来代替它是一个好习惯。

n XML 中的注释

在 XML 中编写注释的语法与 HTML 的语法很相似:<!-- This is a comment -->

n 在 XML 中,空格会被保留

n XML 以 LF 存储换行

n XML 元素指的是从(且包括)开始标签直到(且包括)结束标签的部分。

n 元素可包含其他元素、文本或者两者的混合物。元素也可以拥有属性。

n XML 元素可以在开始标签中包含属性,类似 HTML。

n 属性 (Attribute) 提供关于元素的额外信息。

n 属性通常提供不属于数据组成部分的信息。在下面的例子中,文件类型与数据无关,但是对需要处理这个元素的软件来说却很重要:<file type="gif">computer.gif</file>

n 属性值必须被引号包围,不过单引号和双引号均可使用。

n 比如一个人的性别,person 标签可以这样写:<person sex="female">

n 或者这样也可以:<person sex='female'>

n 注释:如果属性值本身包含双引号,那么有必要使用单引号包围它,就像这个例子:

<gangster name='George "Shotgun" Ziegler'>

n 或者可以使用实体引用:

<gangster name="George &quot;Shotgun&quot; Ziegler">

避免 XML 属性?

n 因使用属性而引起的一些问题:

n 属性无法包含多重的值(元素可以)

n 属性无法描述树结构(元素可以)

n 属性不易扩展(为未来的变化)

n 属性难以阅读和维护

请尽量使用元素来描述数据。而仅仅使用属性来提供与数据无关的信息。

命名冲突

包含带有不同内容和定义的 <table> 元素,就会发生命名冲突。

XML 解析器无法确定如何处理这类冲突。

现在,命名冲突不存在了,这是由于都使用了不同的名称来命名它们的 <table> 元素 (<h:table> 和 <f:table>)。

通过使用前缀,我们创建了两种不同类型的 <table> 元素。

使用命名空间(Namespaces)

XML Namespace (xmlns) 属性

n XML 命名空间属性被放置于某个元素的开始标签之中,并使用以下的语法:

n xmlns:namespace-prefix="namespaceURI"

n 当一个命名空间被定义在某个元素的开始标签中时,所有带有相同前缀的子元素都会与同一个命名空间相关联。

n 注释:用于标示命名空间的地址不会被解析器用于查找信息。其惟一的作用是赋予命名空间一个惟一的名称。

基于51单片机,实现对直流电机的调速、测速以及正反转控制。项目包含完整的仿真文件、源程序、原理图和PCB设计文件,适合学习和实践51单片机在电机控制方面的应用。 功能特点 调速控制:通过按键调整PWM占空比,实现电机的速度调节。 测速功能:采用霍尔传感器非接触式测速,实时显示电机转速。 正反转控制:通过按键切换电机的正转和反转状态。 LCD显示:使用LCD1602液晶显示屏,显示当前的转速和PWM占空比。 硬件组成 主控制器:STC89C51/52单片机(与AT89S51/52、AT89C51/52通用)。 测速传感器:霍尔传感器,用于非接触式测速。 显示模块:LCD1602液晶显示屏,显示转速和占空比。 电机驱动:采用双H桥电路,控制电机的正反转和调速。 软件设计 编程语言:C语言。 开发环境:Keil uVision。 仿真工具:Proteus。 使用说明 液晶屏显示: 第一行显示电机转速(单位:转/分)。 第二行显示PWM占空比(0~100%)。 按键功能: 1键:加速键,短按占空比加1,长按连续加。 2键:减速键,短按占空比减1,长按连续减。 3键:反转切换键,按下后电机反转。 4键:正转切换键,按下后电机正转。 5键:开始暂停键,按一下开始,再按一下暂停。 注意事项 磁铁和霍尔元件的距离应保持在2mm左右,过近可能会在电机转动时碰到霍尔元件,过远则可能导致霍尔元件无法检测到磁铁。 资源文件 仿真文件:Proteus仿真文件,用于模拟电机控制系统的运行。 源程序:Keil uVision项目文件,包含完整的C语言源代码。 原理图:电路设计原理图,详细展示了各模块的连接方式。 PCB设计:PCB布局文件,可用于实际电路板的制作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值