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

php教程-xml编程(一)-xml语法

extensiblemarkuplanguage,用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言
XML编程
Xml语法
DTD约束
PHP DOM
SIMPLEXML
一、 简介
1、 发展
  • gml  通用标记语言 1969年 软件如果想实现高度的移植性,必须要有一个统一的标准
  • sgml  标准通用标记语言1985年
  •  html   超文本标记语言1993年,解决不同平台,不同浏览器访问同一网页
  •  xml可扩展标记语言 1998年
2、 关于xml的定义
  • extensible markup language ,用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。 
3、 xml和html的不同
  • html:显示数据   
     
  • xml:保存数据
  • html标签不能自定义,从标签上不能达到“见词知意”的目的
  • html:武松
xml:<表格>武松
  • html将数据与格式绑定在一起
商品名
  • 不同浏览器解html不同:IE,火狐。
  •  html语法要求不严格
  •  等等
4、 xml的主要用途
  •  程序之间的相互通讯
  • 作为程序的配置文件
  • 存储数据
  • 规范数据格式
二、 xml快速入门
描述一个人的信息
  


    
        张三
        30
    


三、 xml语法
xml文件的构成
  • 文档声明
  • 元素
  • 元素属性
  • 注释
  • CDATA区
  • 特殊字符
  • 处理指令
文档声明:
  • 需要先使用文档声明来声明XML文档
  •  最简单的语法:
  • encoding 
指定编码格式
  •  standalone
当前文档是否独立  yes/no
元素:
  • 一个标签分为起始和结束标签(不能省略)
错误:内容
正确:
  • 一个标签中可以嵌套若干子标签,但所有标签必须合理的嵌套,不允许有交叉嵌套
错误:
正确:
  • 一个XML文档必须有且仅有一个根标签,其他标签都是这个根标签的子标签
元素-命名:
  • 元素(标签)的名称可以包含字母、数字、减号、下划线和英文句点
  • 严格区分大小写;
表示两个标签
  • 只能以字母或下划线开头;
A123
_123
错误:12a
  • 不能以xml(或XML、Xml等)开头
错误:xmlabc
  • 名称字符之间不能有空格或制表符;
错误:;正确:
  • 名称字符之间不能使用冒号:错误:
元素属性
  • 一个元素可以有多个属性
  • 属性值一定要用引号(单引号或双引号)引起来
  • 属性名称的命名规范与元素的命名规范相同
  • 元素中的属性是不允许重复的
错误 
  •  标签属性所代表的信息也可以被改成用子元素的形式来描述
 可以改成
100
注释
XML声明之前不能有注释
注释不能嵌套,
错误>

CDATA区:

  • CDATA:Character Data    字符数据

作用:把标签当做普通文本内容

语法:

cdata

特殊字符:

  • 对于一些特殊字符,若要在元素主体内容中显示,必须进行转义。
xml教程
xml教程

处理指令:

  • 作用:用来指挥软件如何解析XML文档。
  • 语法:必须以“”作为结尾。
  • 常用处理指令:

xml指令

xml-stylesheet指令

#p#xml教程-xml的dtd约束#e#

DTD约束

一、 什么是约束

  • XML技术中,可以编写一个文档来约束一个XML的书写规范,这个文档称之为约束,Xml约束文档
  • 约束文档定义了在XML中允许出现的元素名称、属性及元素出现的顺序等等。

格式良好的XML:遵循XML语法的XML

有效的XML:遵循约束文档的XML

遵循xml语法的文档称之为合法的

遵循约束文档的xml文档称之为合理的

合法的xml不一定是合理的

合理的一定是合法的

二、 常见的约束

  • XML DTD
  • XDR
  • SOX
  • XML Schema

三、 什么是dtd

  • l Document Type Definition 文档类型定义
  • 约束XML的书写规范

四、 dtd存放的位置

  • 文件中:可以将dtd约束放在当前xml文件中
  • 外部文件:也可以将约束放到一个外部的.dtd的文档中

五、 dtd快速入门

xmldtd约束文档

六、 如何检测我们xml文档是否符合dtd约束???

程序

  • ActiveXObject("Microsoft.XMLDOM")  //实例化xmldom对象
  • doc.validateOnParse //是否开启检验
  • doc.async //是否异步
  • doc.load() //加载
  • doc.parseError.reason //错误信息
  • doc.parseError.line //错误行号
php学习博客

软件 iexmltls  这个小插件可以在ie下检测你写的文档是否是有效的xml'文档。

七、 如何引用外部dtd

  • DOCTYPE声明:

 //外部引入dtd文档

xml教程

八、 dtd语法

  •  定义元素
  • 定义属性
  • 定义实体
xml

1、 定义元素

语法:

使用规则:

  •  (#PCDATA) :文本数据
  •  EMPTY :空
  •  ANY :任意
  •  (子元素) :只出现一次
  •  (子元素1,子元素2,……) :顺序指定子元素
  • (子元素+) :至少出现一次
  • (子元素*) :子元素可以出现任意次数
  •  (子元素?) :子元素出现0次或1次
  • (子元素1|子元素2) :任选其一

2、 定义属性

  • 语法:

 

属性类型:

  • CDATA :文本
  •  (en1|en2|……) :值任选其一
  • ID :值为唯一 

默认值:

  • #REQUIRED 非空   使用这个修饰的属性必须要写
  •  #IMPLIED 可选   可写可不写
  •  #FIXED 固定值   可以不指定,如果指定,只能使用这个值
  • 值 默认值   如果指定值,则以指定值为标准,如果没有指定,则使用默认值

3、 定义实体

  •  定义实体就是为一段内容指定一个名称,使用时通过这个名称就可以引用其所代表的内容
  •  内部实体
  • 外部实体

定义内部实体

定义语法:

 

引用语法:

&实体名;

xml语法
定义外部实体
  • 定义语法:

 

  • 引用语法:

&实体名

xml教程

推荐阅读
  • 本文讨论了Alink回归预测的不完善问题,指出目前主要针对Python做案例,对其他语言支持不足。同时介绍了pom.xml文件的基本结构和使用方法,以及Maven的相关知识。最后,对Alink回归预测的未来发展提出了期待。 ... [详细]
  • 本文内容为asp.net微信公众平台开发的目录汇总,包括数据库设计、多层架构框架搭建和入口实现、微信消息封装及反射赋值、关注事件、用户记录、回复文本消息、图文消息、服务搭建(接入)、自定义菜单等。同时提供了示例代码和相关的后台管理功能。内容涵盖了多个方面,适合综合运用。 ... [详细]
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • Monkey《大话移动——Android与iOS应用测试指南》的预购信息发布啦!
    Monkey《大话移动——Android与iOS应用测试指南》的预购信息已经发布,可以在京东和当当网进行预购。感谢几位大牛给出的书评,并呼吁大家的支持。明天京东的链接也将发布。 ... [详细]
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • GetWindowLong函数
    今天在看一个代码里头写了GetWindowLong(hwnd,0),我当时就有点费解,靠,上网搜索函数原型说明,死活找不到第 ... [详细]
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 基于layUI的图片上传前预览功能的2种实现方式
    本文介绍了基于layUI的图片上传前预览功能的两种实现方式:一种是使用blob+FileReader,另一种是使用layUI自带的参数。通过选择文件后点击文件名,在页面中间弹窗内预览图片。其中,layUI自带的参数实现了图片预览功能。该功能依赖于layUI的上传模块,并使用了blob和FileReader来读取本地文件并获取图像的base64编码。点击文件名时会执行See()函数。摘要长度为169字。 ... [详细]
  • 本文介绍了使用AJAX的POST请求实现数据修改功能的方法。通过ajax-post技术,可以实现在输入某个id后,通过ajax技术调用post.jsp修改具有该id记录的姓名的值。文章还提到了AJAX的概念和作用,以及使用async参数和open()方法的注意事项。同时强调了不推荐使用async=false的情况,并解释了JavaScript等待服务器响应的机制。 ... [详细]
  • 本文介绍了使用Java实现大数乘法的分治算法,包括输入数据的处理、普通大数乘法的结果和Karatsuba大数乘法的结果。通过改变long类型可以适应不同范围的大数乘法计算。 ... [详细]
  • Java序列化对象传给PHP的方法及原理解析
    本文介绍了Java序列化对象传给PHP的方法及原理,包括Java对象传递的方式、序列化的方式、PHP中的序列化用法介绍、Java是否能反序列化PHP的数据、Java序列化的原理以及解决Java序列化中的问题。同时还解释了序列化的概念和作用,以及代码执行序列化所需要的权限。最后指出,序列化会将对象实例的所有字段都进行序列化,使得数据能够被表示为实例的序列化数据,但只有能够解释该格式的代码才能够确定数据的内容。 ... [详细]
  • HDU 2372 El Dorado(DP)的最长上升子序列长度求解方法
    本文介绍了解决HDU 2372 El Dorado问题的一种动态规划方法,通过循环k的方式求解最长上升子序列的长度。具体实现过程包括初始化dp数组、读取数列、计算最长上升子序列长度等步骤。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 本文讨论了如何优化解决hdu 1003 java题目的动态规划方法,通过分析加法规则和最大和的性质,提出了一种优化的思路。具体方法是,当从1加到n为负时,即sum(1,n)sum(n,s),可以继续加法计算。同时,还考虑了两种特殊情况:都是负数的情况和有0的情况。最后,通过使用Scanner类来获取输入数据。 ... [详细]
author-avatar
天和网-嫣然
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有