XML基础总结

1 篇文章 0 订阅

一、XML 简介

1. 什么是 XML?

  • XML 指可扩展标记语言(EXtensible Markup Language
  • XML 是一种标记语言,很类似 HTML
  • XML 的设计宗旨是传输数据,而非显示数据
  • XML 标签没有被预定义。您需要自行定义标签。
  • XML 被设计为具有自我描述性。
  • XML W3C 的推荐标准

 

2.XML 元素 vs. 属性

请看这些例子:

<person sex="female">
  <firstname>Anna</firstname>
  <lastname>Smith</lastname>
</person>

<person>
  <sex>female</sex>
  <firstname>Anna</firstname>
  <lastname>Smith</lastname>
</person>

在第一个例子中,sex 是一个属性。在第二个例子中,sex 则是一个子元素。两个例子均可提供相同的信息。

没有什么规矩可以告诉我们什么时候该使用属性,而什么时候该使用子元素。我的经验是在 HTML 中,属性用起来很便利,但是在 XML 中,您应该尽量避免使用属性。如果信息感觉起来很像数据,那么请使用子元素吧

3. 我最喜欢的方式

下面的三个 XML 文档包含完全相同的信息:

第一个例子中使用了 date 属性:

<note date="08/08/2008">
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
</note>

第二个例子中使用了 date 元素:

<note>
<date>08/08/2008</date>
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
</note>

第三个例子中使用了扩展的 date 元素(这是我的最爱):

<note>
<date>
  <day>08</day>
  <month>08</month>
  <year>2008</year>
</date>
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
</note>

4. 避免 XML 属性?

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

  • 属性无法包含多个值(子元素可以)
  • 属性无法描述树结构(子元素可以)
  • 属性不易扩展(为未来的变化)
  • 属性难以阅读和维护

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

 

二、XML 验证

 

拥有正确语法的 XML 被称为 形式良好 XML

通过某个 DTD 进行了验证的 XML 合法 XML

一个" 形式良好" XML 文档会遵守前几章介绍过的 XML 语法规则:

  • XML 文档必须有根元素
  • XML 文档必须有关闭标签
  • XML 标签对大小写敏感
  • XML 元素必须被正确的嵌套
  • XML 属性必须加引号

 

1. 验证 XML 文档

一个合法的 XML 文档是" 形式良好" XML 文档,同样遵守文档类型定义 (DTD) 的语法规则:

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE note SYSTEM "Note.dtd">
<note>
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
</note> 

XML DTD

DTD 的作用是定义 XML 文档的结构。它使用一系列合法的元素来定义文档结构:

Note.dtd
<!DOCTYPE note [
  <!ELEMENT note (to,from,heading,body)>
  <!ELEMENT to      (#PCDATA)>
  <!ELEMENT from    (#PCDATA)>
  <!ELEMENT heading (#PCDATA)>
  <!ELEMENT body    (#PCDATA)>
]>

XML Schema

W3C 支持一种基于 XML DTD 代替者,它名为 XML Schema

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

2.XML 中使用CSS 样式

通过使用 CSS ,可为 XML 文档添加显示信息。

BOOKSTORE.xml

<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet type="text/css" href="style.css"?>
<BOOKSTORE>
  <BOOK>
    <TITLE>Empire Burlesque</TITLE>
    <ARTIST>Bob Dylan</ARTIST>
    <COUNTRY>USA</COUNTRY>
    <COMPANY>Columbia</COMPANY>
    <PRICE>10.90</PRICE>
    <YEAR>1985</YEAR>
  </BOOK>
</BOOKSTORE>

style.css

BOOKSTORE{
background-color: #ffffff;
width: 100%;
}

BOOK{
display: block;
margin-bottom: 30pt;
margin-left: 0;
}

TITLE{
color: #FF0000;
font-size: 20pt;
}

ARTIST{
color: #0000FF;
font-size: 20pt;
}

COUNTRY,PRICE,YEAR,COMPANY{
display: block;
color: #000000;
margin-left: 20pt;
}

3.XML 中使用XSLT

XSLT
是首选的 XML 样式表语言,XSLT (eXtensible Stylesheet Language Transformations)

XSLT
是一种用于将 XML 文档转换为 XHTML 文档或其他 XML 文档的语言。
XPath
是一种用于在 XML 文档中进行导航的语言。

什么是 XSLT
XSLT
XSL 转换(XSL Transformations )。
XSLT
XSL 中最重要的部分。
XSLT
可将一种 XML 文档转换为另外一种 XML 文档。
XSLT
使用 XPath XML 文档中进行导航。
XPath
是一个 W3C 标准。

例子:

breakfast_menu.xml

<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet type="text/xsl" href="simple.xsl"?>
<breakfast_menu>
  <food>
    <name>Belgian Waffles</name>
    <price>$5.95</price>
     <description>
       two of our famous Belgian Waffles
    </description>
    <calories>650</calories>
  </food>
</breakfast_menu>


simple.xsl

<?xml version="1.0" encoding="ISO-8859-1"?>
<!-- Edited with XML Spy v2007 (http://www.altova.com) -->
<html xsl:version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml">
  <body style="font-family:Arial,helvetica,sans-serif;font-size:12pt;
        background-color:#EEEEEE">

    <xsl:for-each select="breakfast_menu/food">

      <div style="background-color:teal;color:white;padding:4px">
        <span style="font-weight:bold;color:white">
        <xsl:value-of select="name"/></span>

        - <xsl:value-of select="price"/>
      </div>


      <div style="margin-left:20px;margin-bottom:1em;font-size:10pt">
        <xsl:value-of select="description"/>

        <span style="font-style:italic">
          (<xsl:value-of select="calories"/> calories per serving)
        </span>
      </div>


    </xsl:for-each>
  </body>
</html>

参考:w3school

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值