XML语言:html,xhtml
XML(可拓展标记语言):原自SGML
特点:描述的是语义和结构,不是格式化
数据和显示所分离xsl
是自描述语言:使用DTD(.dtd)和schema(.xsd)进行自描述
HTML与XML的区别;
1.结构上
2.扩展性
3.可读性与可维护性
4.语法上
5.侧重点:
现状
用途
1.数据传输(JSON)
2.配置文件(pom.xml(Maven),ApplicationContext.xml,web.xml)(yml,yaml(Spring Boot))
3.通信领域
4.开发一些新的语言(SVG)
开发工具:VSCode
语法:1.声明:<?xml version=”1.0” encoding=”UTF-8”?>
标识这个文件是XML文件
Tips:xml中的version不可省略
2.DOM结点:
元素 属性 文本 CDATA 实体 注释
Xml语法:<根元素>
<子元素></子元素>
</根元素>
<configuration>
<environments default="mysql">
<environment id="mysql">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<property name="driver" value="com.mysql.cj.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/db_mybatis?serverTimezone=UTC" />
<property name="username" value="root" />
<property name="password" value="root" />
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/ssm/mapper/UserMapper.xml" />
</mappers>
</configuration>
Xml对应的原则:1.必须是以xml声明为开头的
2.根只有一个
3.大小写敏感
4.””
5.成对(HTML中元素不一定成对,但是在XML中元素是必须成对出现的)
6.规范格式:
<根>
<子1>
<子2>
</子1>
</子2>
</根>
这是错误的
注释:<!-- > &It;-->
处理指令:<?terget instruction ?> target:目标程序 instruction:用来传递数据的指令
元素;1.空元素(<a/>)
2.带属性的元素
3.带内容的元素<a width=“20px“ name=”你好“>内容</a>
4.既有内容又有属性的元素
实体引用<>”’&
< <
> >
& &
“ "
‘ &apot;
CDATA:
<![CDATA[
<>”’&
]]>
命名空间:
DTD和XSD
DTD:
内部DTD一定比外部DTD优先级高
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<!DOCTYPE configuration SYSTEM "http://mybatis.org/dtd/mybatis-3-config.dtd">
<!DOCTYPE 根元素名 SYSTEM/PUBILC [“DTD-name”] “DTD所在地址”>
<?xml version=”1.0” encoding=”UTF-8”?>
<!ELEMENT><!—定义XML元素-->
<!ATTLIST>元素所有的属性
<!EMTITY>定义实体
<!NOTATION>定义符号
<!ELEMENT authorlist (author+)>
()分组
|或
+至少出现1次
*容许出现0-∞次
?最多出现一次
,按顺序出现
空元素:
<!ELEMENT authorlist EMPTY>
无限制元素:
<!ELEMENT authorlist ANY>
简单元素
<!ELEMENT authorlist (#PCDATA)>
混合元素:
<!ELEMENT authorlist (#PCDATA|子元素)*>
<!ATTLIST>属性
<!ATTLIST 元素名 属性值 属性类型 属性附加说明>
属性附加说明
#REQUIRED 必须赋值
#IMPLIED 可有可无
#FIXED value 固定值
Default value 默认值
属性类型
CATA
Enumerated
ID
IDREF
ENTITY
ENTITIES
NMTOKEN(属性值只能由字母数字下划线,句点冒号连字符组成)
NMTOKENS
实体的声明:区分通用实体和参数实体
1.在引用形式上,通用实体的应用为&entity_name;
参数实体的应用为%entity_name;
2. 在引用范围上,通用实体可以在XML和DTD中引用
参数实体只能在DTD中引用
通用实体的定义<!ENTITY entity_name “值”>
参数实体的定义<!ENTITY % entity_name “值”>
Xsd(xml schema)
特征:一致性,完备型,规范性,准确性,面向对象,拓展性
基本结构:
<?xml version=”1.0” encoding=”UTF-8”>
<xsd:schema name=”schema的名字,可以省略” xmlns:xsd=http://www.w3.org/2001/XMLSchema>
//xsd文件的内容
</xsd:schema>
引用:ApplicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<!-- 将指定类配置给Spring,让Spring创建其对象的实例 -->
<bean id="userDao" class="com.ssm.ioc_di.UserDaoImpl">
</bean>
<!-- 添加一个id为userService的Bean -->
<bean id="userService" class="com.ssm.ioc_di.UserServiceImpl">
<!-- 将id为userDao的Bean实例注入到userService实例中 -->
<property name="userDao" ref="userDao"/>
</bean>
</beans>
主要组件:
1.类型:
简单类型和复杂类型
带有子元素或使用属性的元素在Schema中属于复杂类型
复杂类型:
<student>
<sno>1.1</sno>
</student>
简单类型:
<student>安子</student>
2.元素声明 使用element元素定义XML文档中的元素
<element name=”XML元素的名称” type=”XML元素的数据类型” [minOccurs=”最小出现次数,最小为0”] [maxOccurs=”最大出现次数,最小为1,最大为unbounded,无限大”]>
3.属性声明
只有复杂类型才有属性,简单类型没有属性
元素可以有简单和复杂类型,而属性只有简单类型
语法:
<element name=”element_name” type=”dataType”>
<xsd:complexType name=”datatype”>
<xsd:attribute name=”属性名字” type=”simple_type” use=”use_method” default=”value” fixed=”value” >
</xsd:attibute>
</xsd:complexType>
</xsd:element>
Use_method可以取optional(可有可无,默认),required(必须有),prohibited(不可出现,用于restriction元素限制属性使用)
4.组定义
<xsd:group>
<xsd:sequence>
<xsd:element name=”” type=””>
<xsd:element name=”” type=””>
</xsd:sequence>
</xsd:group>
5.注释
<doucumentation/> 适合阅读的信息
<appinfo/> 文档的应用程序信息
数据类型:
简单类型(只能包含数据)和复杂类型(可以包含元素)
简单类型包含string,boolean,data,dataTime,time,integer,float,自定义数据类型
自定义数据类型:
<xsd:simpleType name=””>
<xsd:restriction base=”dataTypes”>
<xsd:facets_element value=””>//约束规则
eg:
<xsd:length value=”6”>
</xsd:restriction>
</xsd:simpleType>
正则表达式:(定义字符)
? | 出现0次或1次 |
* | 出现1次或多次 |
+ | 出现多次 |
{n}/{m,n} | 出现n次或m~n次 |
[字符范围] | 可选择的字符范围 |
| | 选择关系 |
^ | 非 |
() | 匹配次数时用做整体修饰 |
复杂类型
命名空间
<元素名 xmlns=”URL”>
使用:
<table xmlns=”URL”>
XML文件有效性的验证:
1.必须有根标签
2.标签必须关闭
3.大小写敏感
4.准确的嵌套
5.属性必须加引号
有效的XML文件的验证
1.XML文件是有效的
2.遵守与之关联的DTD和Schema中定义的规则
3.有效性验证方法:开发工具 编程
XHTML:XHTML 是以 XML 格式编写的 HTML。
XPath
- XPath 使用路径表达式在 XML 文档中进行导航
- XPath 包含一个标准函数库
- XPath 是 XSLT 中的主要元素
- XPath 是一个 W3C 标准
在 XPath 中,有七种类型的节点:元素、属性、文本、命名空间、处理指令、注释以及文档节点(或称为根节点)。
nodename 选取此节点的所有子节点。
/ 从根节点选取。
// 从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置。
. 选取当前节点。
.. 选取当前节点的父节点。
@ 选取属性。
例如;
路径表达式 | 结果 |
bookstore | 选取 bookstore 元素的所有子节点。 |
/bookstore | 选取根元素 bookstore。 |
bookstore/book | 选取属于 bookstore 的子元素的所有 book 元素。 |
//book | 选取所有 book 子元素,而不管它们在文档中的位置。 |
bookstore//book | 选择属于 bookstore 元素的后代的所有 book 元素,而不管它们位于 bookstore 之下的什么位置。 |
//@lang | 选取名为 lang 的所有属性。 |
注释:假如路径起始于正斜杠( / ),则此路径始终代表到某元素的绝对路径!
通配符:
通配符 | 描述 |
* | 匹配任何元素节点。 |
@* | 匹配任何属性节点。 |
node() | 匹配任何类型的节点。 |
谓语:
谓语用来查找某个特定的节点或者包含某个指定的值的节点。谓语被嵌在方括号中。
|
XHTML样式表:CSS、XSL
XSL构成:XSLT(可拓展样式表语言转化),XPath,XSL-FO(xsl格式化对象)
XSLT对XML进行转化的过程
1.根据XML构建源树,然后根据XSLT样式表通过XSLT处理器将源树转化为结果树
2.生成结果书后,就可以根据XSL-FO对其进行解释,产生一种显示、打印或播放的格式
基本结构:
<?xml version=”1.0” encoding=”UTF-8”?>
<xsl:stylesheet version=”1.0” xmlns:xsl=http://www.w3.org/1999/Trasform>
<xsl:template match=”\”>
</xsl:template>
</xsl:stylesheet>
结构树:根结点 /
处理指令结点 结点
链接样式到XML文档:<?xml-stylesheet type=”text/xsl” herf=”Student.xsl”?>
Xsl的两种根结点:<xsl:stylesheet/>、<xsl:transform/>
Xsl的基本结构:
<?xml version=”1.0” encoding=”UTF-8”?>
<xsl:stylesheet version=”1.0” xmlns=”http://www.w3.org/1999/XSL/Transform”>
<xsl:template match=”/”>
</xsl:templete>
</xsl:stylesheet>
<xsl:template>处理子节点
<xsl:template match=”XPATH表达式来表示匹配模式” name=”模板定义的方法” priority=”定义模板的优先级” mode=”为模板定义模式”>
</xsl:template>
<xsl:apply-templates>处理多个子结点
语法:
<xsl:apply-templates select=”XPath表达式” mode=“区分XSL文件中为相同标记的模板”>
</xsl:apply-templates>
<xsl:value-of>获取结点值
<xsl:value-of select=”XPATH”/>
<xsl:for-each>处理多个元素
<xsl:for-each select=”XPATH”>
</xsl:for-each>
<xsl:sort>对元素输出排序
<xsl:sort select=”XPath” order=”ascending(升序)/descending(降序)” data-type=”text/number/QName” case-order=”当data-type为text时,才填写这个属性,wpper-first(大写字母排前)/lower-first(小写字母排前)”>
<xsl:if>与<xsl:choose> 用于选择的元素
<xsl:if>
语法:
<xsl:if test=””>
</xsl:if>
<xsl:choose>
语法:
<xsl:choose>
</xsl:choose>
<xsl:when>和<xsl:otherwise>
区别 1.<xsl:if>只能在满足条件的之后输出,没有<xsl:else>这种语句
2.<xsl:choose>可以实现多选一的功能,相当于其他语言中的switch-case结构
3.<xsl:when><xsl:otherwise>只能放在<xsl:choose>语句中,<xsl:when>可以出现多次,但是<xsl:otherwise>在一个<xsl:choose>中只能出现一次,且这两个元素都是通过test属性指定一个布尔表达式为判断条件