XML详解

  • 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>

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值