- XML
- XSL
- XSLT
- XSL-FO
- XPath
- XQuery
- XLink
- XPointer
- DTD
- Schema
- XML DOM
- XForms
- WAP
说下用的比较多的四个:XML、XSLT、DTD、Schema,还有一些用的比较多像XML DOM,大家还想了解更多可以去看看菜鸟教程或者w3c官网
XML:可拓展标记语言
我们开发者在开发时都会碰到xml这种东西,有些配置上如SSM框架的配置上都会用到,还有的时候会用到xml进行数据传输、存储,还有xml与json转换等等......
具体作用:
- 可作为一种简单的数据库,存储并检索数据;
- 传输约定格式的文件;
- 做软件的配置文件。【配置文件:保存软件设置的文件】
xml可以用来表示一些信息,可用性非常强例如:
<?xml version="1.0" encoding="UTF-8"?>
<to>567890@163.com</to>
<form>123456@163.com</form>
<title>about loving</title>
<body>I love you forever!</body>
<date>2018-11-26</date>
</email>
看到这个一下就能明白其中的含义对不对
XSLT:扩展样式表语言
从名字我们可以看到'样式',在html中我们知道样式是css,所以xslt与css有一定关系
我们知道在css和html中table代表样式和表格,那我们xml中如果也用table,那么浏览器就不清楚该如何区显示它,我们来看下面例子,首先引入声明
<xsl:transform version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
创建样式表
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<body>
<h2>My CD Collection</h2>
<table border="1">
<tr bgcolor="#9acd32">
<th>Title</th>
<th>Artist</th>
</tr>
<xsl:for-each select="catalog/cd">
<tr>
<td><xsl:value-of select="title"/></td>
<td><xsl:value-of select="artist"/></td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
将样式表链接到xml文档
<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet type="text/xsl" href="cdcatalog.xsl"?>
<catalog>
<cd>
<title>Empire Burlesque</title>
<artist>Bob Dylan</artist>
<country>USA</country>
<company>Columbia</company>
<price>10.90</price>
<year>1985</year>
</cd>
.
.
</catalog>
然后我们让浏览器解析xml会发现有一定的样式
DTD和Schema
将这两个放在一起讲呢,是因为这两个小哥觉得差不多
首先有.dtd文件或者.xsd文件,然后再文件里面规定了数据类型以及结构等等,然后我们在xml上对这些文件进行引用就可以自己设计xml结构数据了,并用于数据传输存储等
我们先设计一个dtd或者xsd文件
note.dtd
<!ELEMENT note (to,from,heading,body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>
note.xml
<?xml version="1.0"?>
<!DOCTYPE note SYSTEM "note.dtd">
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
其中<!ELEMENT note (to,from,heading,body)>声明了根标签note,及其子元素to,from,heading,body,并设计相关的类型(#PCDATA),然后我们在note.xml里面就可以自己使用自己定义的标签了,同理Schema也是差不多的,Schema比dtd更加强大,为什么这么说呢,例如我们在传输一些数据的时候,有些数据例如日期有些人2018-11-26,有些人写11-26-2018,如果是dtd那么就没有了明确的规范,我们在接收时也许会不如我们所愿,Schema就很好解决这些,因为他带了一些固定的类型例如type=”date“
引用
xmlns="http://www.w3schools.com"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.w3schools.com note.xsd"
对比上面dtd的例子,我们看下相同内容XML Schema
note.xsd
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.w3schools.com"
xmlns="http://www.w3schools.com"
elementFormDefault="qualified">
<xs:element name="note">
<xs:complexType>
<xs:sequence>
<xs:element name="to" type="xs:string"/>
<xs:element name="from" type="xs:string"/>
<xs:element name="heading" type="xs:string"/>
<xs:element name="body" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
note.xml
<?xml version="1.0"?>
<note
xmlns="http://www.w3schools.com"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.w3schools.com note.xsd">
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>