SlideShare une entreprise Scribd logo
1  sur  59
Télécharger pour lire hors ligne
XML基础培训

 Kevin Xiong
     @btkxcn
议题

XML基础知识
XML命名空间
XML Schema
XML解析
XSL/XSLT
XPath
XML基础知识
What is XML?

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

XML 不是 HTML 的替代。
XML 和 HTML 为不同的目的而设计:
XML 被设计为传输和存储数据,其焦点是数据的内容。
HTML 被设计用来显示数据,其焦点是数据的外观。
HTML 旨在显示信息,而 XML 旨在传输信息。
XML 的特点

XML是没有任何行为的
XML 是纯文本
通过 XML 你可以定义自己的标签
XML 是独立于软件和硬件的信息传输工具
XML 的用途

XML 把数据从 HTML 分离
XML 简化数据共享和数据传输
XML 简化平台的变更
XML 使你的数据更有用
XML 用于创建新的 Internet 语言
  XHTML - 最新的 HTML 版本
  WSDL - 用于描述可用的 web service
  WAP 和 WML - 用于手持设备的标记语言
  RSS - 用于 RSS feed 的语言
  RDF 和 OWL - 用于描述资源和本体
  SMIL - 用于描述针针对 web 的多媒体
XML样例

<?xml version="1.0" encoding=“UTF-8" ?>
<cd sernum="99999">
<!-- IMHO, a truly great CD -->
 <title>Yankee Hotel Foxtrot</title>
 <artist>Wilco</artist>
 <cover>
<file path="/covers/yht.gif”/>
 </cover>
 <track no=“4">War on War</track>
</cd>
基本语法

   以XML声明开始
       <?xml version="1.0" encoding=“UTF-8"?>
   剩余的部分必须包含在根元素(root element)内
<cd sernum="99999"> … </cd>
   XML 文档形成一种树结构
   元素可以嵌套
   元素可以包含子元素和文本,元素可以拥有属性
详细语法规则

所有 XML 元素都须有关闭标签
XML 标签对大小写敏感
XML 必须正确地嵌套
XML 的属性值须加引号
实体引用
   拥有特殊意义的字符( "<" 和 "&" )必须用实体引用来代
   替
     < &lt;
     > &gt;
     & &amp;
     ‘ &apos;
     “ &quot;
详细语法规则(续)

XML 中的注释
   <!-- This is a comment -->
在 XML 中,空格会被保留
XML 以 LF 存储换行
XML元素
XML 元素指的是从(且包括)开始标签直到(且包括)结束标签的部分
XML 元素必须遵循以下命名规则:
  名称可以含字母、数字以及其他的字符
  名称不能以数字或者 标点符号开始
  名称不能以字符 “xml”(或者 XML、Xml)开始
  名称不能包含空格
最佳命名习惯
  使名称具有描述性。使用下划 线的名称也很不错。
  名称应当比较简短,比如:<book_title>,而不是:
  <the_title_of_the_book>。
  避免 "-" 字符。如果您按照 这样的方式进行命名:"first-name",一些软件会认
  为你需要提取第一个单词。
  避免 "." 字符。如果您按照 这样的方式进行命名:"first.name",一些软件会认
  为 "name" 是对象 "first" 的属性。
  避免 “:” 字符。冒号会被 转换为命名空间来使用。
XML 属性

XML 属性必须加引号
   属性值必须被引号包围,不过单引号和双引号均可使用。
   如果属性值本身包含双引号,那么有必要使用单引号包围它
   或者可以使用实体引用
子元素 vs. 属性
理论上的差异
 子元素是元素的组成部分,属性是元素的额外信息
属性的限制
 属性无法包含多个值(子元素可以)
 属性无法描述树结构(子元素可以)
 属性不易扩展(为未来的变化)
 属性难以阅读和维护
 作为元数据的 XML 属性
 用于标识XML元素的ID
 元数据(有关数据的数据)应当存储为属性,而数据本
 身应当存储为元素。
XML验证

形式完备:拥有正确的语法
 XML 文档必须有根元素
 XML 文档必须有关闭标签
 XML 标签对大小写敏感
 XML 元素必须被正确的嵌套
 XML 属性必须加引号
合法:满足DTD/Schema定义的约束
 XML DTD
 XML Schema
DTD

文档类型定义(DTD)可定义合法的XML文档构
建模块。它使用一系列合法的元素来定义文档
的结构。定义下列值的合法区间:
 元素
 属性
 实体
 PCDATA(parsed character data)
 CDATA (character data)
XML Schema

参见XML Schema章节
XML CDATA
所有 XML 文档中的文本均会被解析器解析
只有 CDATA 区段(CDATA section)中的文本会被解析器
忽略。 CDATA 区段开始于 "<![CDATA[",结束于 "]]>”

  <script>
  <![CDATA[
  function matchwo(a,b)
  {
  if (a < b && a < 0)
                          CDATA 区段不能包含字符串 "]]
  {                       >",所以,CDATA 区段的嵌套是不
  return 1                被允许的。
  }
  else
  {
  return 0
  }
  }
  ]]>
  </script>
XML命名空间
XML命名空间

XML命名空间可提供避免元素命名冲突的方
法
命名冲突

<table>
<tr>               <table>
<td>Apples</td>    <name>Coffee Table</name>
<td>Bananas</td>   <width>80</width>
</tr>              <length>120</length>
</table>           </table>
XML命名空间

使用前缀来避免命名冲突




<h:table>
<h:tr>                 <f:table>
<h:td>Apples</h:td>    <f:name>Coffee Table</f:name>
<h:td>Bananas</h:td>   <f:width>80</f:width>
</h:tr>                <f:length>120</f:length>
</h:table>             </f:table>
XML命名空间

    使用命名空间来避免命名冲突
<h:table xmlns:h="http://www.w3.org/TR/html4/">
<h:tr>
<h:td>Apples</h:td>
<h:td>Bananas</h:td>
</h:tr>
</h:table>
                      <f:table xmlns:f="http://www.w3school.com.cn/furniture">
                      <f:name>Coffee Table</f:name>
                      <f:width>80</f:width>
                      <f:length>120</f:length>
                      </f:table>


与仅仅使用前缀不同,我们为 <table> 标签添加了一个 xmlns 属性,这样就
为前缀赋予了一个与某个命名空间相关联的限定名称。
XML Namespace (xmlns) 属性

 XML 命名空间属性被放置于某个元素的开始标签之中,
 并使用以下的语法:
    xmlns:namespace-prefix="namespaceURI"
 当一个命名空间被定义在某个元素的开始标签中时,所
 有带有相同前缀的子元素都会与同一个命名空间相关
 联。

 <h:table xmlns:h="http://www.w3.org/TR/html4/">

 <f:table xmlns:f="http://www.w3school.com.cn/furniture">
默认的命名空间(Default
     Namespaces)
  为某个元素定义默认的命名空间可以让我
  们省去在所有的子元素中使用前缀的工作
<table xmlns="http://www.w3.org/TR/html4/">
<tr>
<td>Apples</td>
<td>Bananas</td>
</tr>
</table>
                  <table xmlns="http://www.w3school.com.cn/furniture">
                  <name>Coffee Table</name>
                  <width>80</width>
                  <length>120</length>
                  </table>
命名空间的实际应用
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-
beans-2.0.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd" >

<bean id=“dataSource” class=“org.springframework.jndi.JndiObjectFactoryBean” > …
</bean>
...
<aop:config>
<aop:advisor
pointcut="execution(* com.bill99.seashell.domain..NotifyService.*(..))” advice-ref="notifyTxAdvice" order="1"/>
<aop:advisor
pointcut="execution(* com.bill99.seashell.domain..*Service.*(..))"
advice-ref="txAdvice" order="2"/>
</aop:config>
<tx:advice id="notifyTxAdvice">
<tx:attributes>
<tx:method name="*" propagation="REQUIRES_NEW" rollback-for="java.lang.Exception" />
</tx:attributes>
</tx:advice>
...
</beans>
XML Schema
XML Schema

XML Schema 的作用是定义XML文档的合法构建模
块,是DTD的继任者
 定义可出现在文档中的元素
 定义可出现在元素中的属性
 定义哪个元素是子元素
 定义子元素的次序
 定义子元素的数目
 定义元素是否为空,或者是否可包含文本
 定义元素和属性的数据类型
 定义元素和属性的默认值以及固定值
XML Schema vs. DTD

XML Schema 可针对未来的需求进行扩展
  在其他 Schema 中重复使用您的 Schema
  创建由标准类型衍生而来的您自己的数据类型
  在相同的文档中引用多重的 Schema
XML Schema 基于 XML 编写
XML Schema 支持数据类型
XML Schema 支持命名空间
如何使用 XSD
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:aop="
http://www.springframework.org/schema/aop" xmlns:tx="http://www.
springframework.org/schema/tx" 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-2.0.xsd http://www.springframework.
org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.
xsd http://www.springframework.org/schema/tx http://www.springframework.
org/schema/tx/spring-tx-2.0.xsd" >
……
</beans>
XSD定义:简单元素与属性

<schema> 元素是每一个 XML Schema 的根元素
XSD 简易元素:只包含文本的元素。它不会包含
任何其他的元素或属性
   <xs:element name="xxx" type="yyy"/>
 XSD 属性:定义属性的语法是:                          最常用的类型是:
                                           xs:string
   <xs:attribute name="xxx" type="yyy"/>   xs:decimal
                                           xs:integer
                                           xs:boolean
                                           xs:date
                                           xs:time
XSD 限定 / Facets
    对值的限定                                 限定               描述
                                                           定义可接受值的一个列表
                                          enumeration

<xs:element name="age“>                                    定义所允许的最大的小数位数。必须大
                                          fractionDigits   于等于0。
<xs:simpleType>
<xs:restriction base="xs:integer">                         定义所允许的字符或者列表项目的精确
                                          length           数目。必须大于或等于0。
<xs:minInclusive value="0"/>
<xs:maxInclusive value="120"/>                             定义数值的上限。所允许的值必须小于
                                          maxExclusive     此值。
</xs:restriction>
</xs:simpleType>                                           定义数值的上限。所允许的值必须小于
                                          maxInclusive     或等于此值。
</xs:element>
                                                           定义所允许的字符或者列表项目的最大
    对一组值的限定                               maxLength        数目。必须大于或等于0。
                                                           定义数值的下限。所允许的值必需大于
                                          minExclusive     此值。
<xs:element name="car" type="carType"/>
<xs:simpleType name="carType">                             定义数值的下限。所允许的值必需大于
                                          minInclusive     或等于此值。
<xs:restriction base="xs:string">
<xs:enumeration value="Audi"/>                             定义所允许的字符或者列表项目的最小
                                          minLength        数目。必须大于或等于0。
<xs:enumeration value="Golf"/>
<xs:enumeration value="BMW"/>             pattern          定义可接受的字符的精确序列。
</xs:restriction>
                                                           定义所允许的阿拉伯数字的精确位数。
</xs:simpleType>                          totalDigits      必须大于0。
                                                           定义空白字符(换行、回车、空格以及
                                          whiteSpace       制表符)的处理方式。
XSD复合元素
空元素
 <product prodid="1345" />

包含其他元素的元素
 <person>
 <firstname>John</firstname>
 <lastname>Smith</lastname>
 </person>

仅包含文本的元素
 <food type="dessert">Ice cream</food>

包含元素和文本的元素
 <description> It happened on
 <date lang="norwegian">03.03.99</date> ....
 </description>
XSD复合元素定义(Sample)

 方式一
<xs:element name="employee">
<xs:complexType>
<xs:sequence>
<xs:element name="firstname" type="xs:string"/>
<xs:element name="lastname" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>

 方式二
<xs:element name="employee" type="personinfo"/>

<xs:complexType name="personinfo">
<xs:sequence>
<xs:element name="firstname" type="xs:string"/>
<xs:element name="lastname" type="xs:string"/>
</xs:sequence>
</xs:complexType>
XSD复合类型指示器
     (Indicators)
Order 指示器:
  All
  Choice
  Sequence
Occurrence 指示器:
  maxOccurs
  minOccurs
Group 指示器:
  元素组
  属性组
XSD<any>元素

  <any>元素使我们有能力通过未被 schema 规定
  的元素来拓展 XML 文档!
<xsd:element name="beans">
...
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="description" minOccurs="0"/>
<xsd:choice minOccurs="0" maxOccurs="unbounded">
<xsd:element ref="import"/>
<xsd:element ref="alias"/>
<xsd:element ref="bean"/>
<xsd:any namespace="##other“ processContents="strict“
minOccurs="0" maxOccurs="unbounded"/>
</xsd:choice>
</xsd:sequence>
...
</xsd:complexType>
</xsd:element>
XSD <anyAttribute> 元素

<anyAttribute> 元素使我们有能力通过未被
schema 规定的属性来扩展 XML 文档
XSD 元素替换(Element
   Substitution)
通过 XML Schema,一个元素可对另一个元素进行替换
 <xs:element name="name" type="xs:string"/>
 <xs:element name="navn" substitutionGroup="name"/>
 <xs:element name="kunde" substitutionGroup="customer"/>

 <customer>
 <name>John Smith</name>
 </customer>
 或类似这样:
 <kunde>
 <navn>John Smith</navn>
 </kunde>
XML 解析
XML解析

解析方法
  DOM
  SAX
 JDOM与DOM4J
 XML Binding
DOM

文档对象模型(Document Object Model)
DOM是一种与浏览器,平台,语言无关的接口
在内存中使用对象模型来表示XML文档
   文档以树状的对象模型表示
   节点,元素,属性,文本元素等等
创建DOM树




<?xml version=“1.0”?>
                        Parse
                          r
                                Dom Tree

      XML                       Root
                                Element
                                    Child
    Document                            Tex
                                    Element
                                        t
                                    Child
                                        Tex
                                    Element
                                        t
SAX

基于事件流的API
在更低的层次上控制XML解析的行为,有更多的
控制权
一般来说,比DOM效率更高
但是,很不幸,编程实现比DOM更复杂
JDOM与DOM4J

JDOM
   提供友好的Java API,使用SAX2解析器
 DOM4J
   Dom4j是一个易用的、开源的库,用于XML,XPath
   和XSLT。它应用于Java平台,采用了Java集合框
   架并完全支持DOM,SAX和JAXP。
XML Binding

类似与OR Mapping的一种技术,完成XML与对象
之间的绑定
简单易用的同时,效率较高
典型实现:
 JAXB
 JiBx
 Castor
 XMLBeans
 XStream
XSL/XSLT
XSL介绍

XSL 指扩展样式表语言(EXtensible Stylesheet
Language)
  CSS = HTML 样式表
  XSL = XML 样式表
  XSL 可描述如何来显示 XML 文档!
XSL - 不仅仅是样式表语言,XSL 包括三部分:
  XSLT
     一种用于转换 XML 文档的语言。
  XPath
     一种用于在 XML 文档中 导航的语言。
  XSL-FO
     一种用于格式化 XML 文档的 语言。
XSLT介绍

XSLT 是一种用于将 XML 文档转换为 XHTML 文档或其他
XML 文档的语言。
 XSLT 指 XSL 转换(XSL Transformations)。
 XSLT 是 XSL 中最重要的部分。
 XSLT 可将一种 XML 文档转换为另外一种 XML 文档。
 XSLT 使用 XPath 在 XML 文档中进行导航。
 XPath 是一个 W3C 标准。
几乎所有主要的浏览器均支持 XML 和 XSLT
XSLT - 转换

根元素:<xsl:transform>
<xsl:template> 元素
<xsl:value-of>元素                      XPath
  <xsl:value-of select="catalog/cd/title"/>
  <xsl:for-each> 元素
  <xsl:sort> 元素
  <xsl:if> 元素
  <xsl:choose>、<xsl:when>、<xsl:otherwise> 元素
  <xsl:apply-templates> 元素

  XSLT实例
XPath
XPath简介

XPath 是一门在 XML 文档中查找信息的语言。XPath 用
于在 XML 文档中通过元素和属性进行导航。
  XPath 使用路径表达式在 XML 文档中进行导航
  XPath 包含一个标准函数库
  XPath 是 XSLT 中的主要元素
  XPath 是一个 W3C 标准
XPath术语
节点(Node)
    元素、属性、文本、命名空间、处理指令、注释以及文档(根)节点
  基本值(或称原子值,Atomic value)
       基本值是无父或无子的节点
  项目(Item)
       项目是基本值或者节点
  节点关系
       父(Parent)
       子(Children)
       同胞(Sibling)
       先辈(Ancestor)
       后代(Descendant)
XPath语法
                                     表达式        描述
   选取节点                              nodename   选取此节点的所有子节点
          XPath 使用路径表达               /          从根节点选取

          式在 XML 文档中选取               //
                                                从匹配选择的当前节点选择文档中的节
                                                点,而不考虑它们的位置
          节点。节点是通过沿
                                     .          选取当前节点
          着路径或者 step 来                          选取当前节点的父节点
                                     ..
          选取的                        @          选取属性




路径表达式             结果
bookstore         选取 bookstore 元素的所有子节点
                  选取根元素 bookstore
/bookstore        注释:假如路径起始于正斜杠( / ),则此路径始终代表到某元素的绝对路径!
bookstore/book    选取所有属于 bookstore 的子元素的 book 元素。
//book            选取所有 book 子元素,而不管它们在文档中的位置。
                  选择所有属于 bookstore 元素的后代的 book 元素,而不管它们位于 bookstore 之下
bookstore//book   的什么位置。
//@lang           选取所有名为 lang 的属性。
XPath语法

     谓语(Predicates)
             谓语用来查找某个特定的节点或
             者包含某个指定的值的节点。
             谓语被嵌在方括号中。

路径表达式                                结果
/bookstore/book[1]                   选取属于 bookstore 子元素的第一个 book 元素。
/bookstore/book[last()]              选取属于 bookstore 子元素的最后一个 book 元素。
/bookstore/book[last()-1]            选取属于 bookstore 子元素的倒数第二个 book 元素。

/bookstore/book[position()<3]        选取最前面的两个属于 bookstore 元素的子元素的 book 元素。

//title[@lang]                       选取所有拥有名为 lang 的属性的 title 元素。

//title[@lang='eng']                 选取所有 title 元素,且这些元素拥有值为 eng 的 lang 属性。

                                     选取所有 bookstore 元素的 book 元素,且其中的 price 元素的值须大
/bookstore/book[price>35.00]         于 35.00。

                                     选取所有 bookstore 元素中的 book 元素的 title 元素,且其中的
/bookstore/book[price>35.00]/title   price 元素的值须大于 35.00。
XPath语法

 选取未知节点                                                             通配符       描述
                                                                    *         匹配任何元素节点
          XPath 通配符可用来选取未知的                                                   匹配任何属性节点
                                                                    @*
          XML 元素                                                    node()    匹配任何类型的节点
 选取若干路径
                                                      路径表达式              结果
          通过在路径表达式中使用“|”                              /bookstore/*       选取 bookstore 元素的所有子节点
          运算符,您可以选取若干个路                               //*                选取文档中的所有元素
          径                                           //title[@*]        选取所有带有属性的 title 元素。




路径表达式                             结果
//book/title | //book/price       选取所有 book 元素的 title 和 price 元素。
//title | //price                 选取所有文档中的 title 和 price 元素。
                                  选取所有属于 bookstore 元素的 book 元素的 title
/bookstore/book/title | //price   元素,以及文档中所有的 price 元素。
XPath Axes(坐标轴)

XPath 轴
             轴可定义某个相对于当前节
             点的节点集

轴名称                  结果
ancestor             选取当前节点的所有先辈(父、祖父等)
ancestor-or-self     选取当前节点的所有先辈(父、祖父等)以及当前节点本身
attribute            选取当前节点的所有属性
child                选取当前节点的所有子元素。
descendant           选取当前节点的所有后代元素(子、孙等)。
descendant-or-self   选取当前节点的所有后代元素(子、孙等)以及当前节点本身。
following            选取文档中当前节点的结束标签之后的所有节点。
namespace            选取当前节点的所有命名空间节点
parent               选取当前节点的父节点。
preceding            选取文档中当前节点的开始标签之前的所有节点。
preceding-sibling    选取当前节点之前的所有同级节点。
self                 选取当前节点。
位置路径表达式
位置路径表达式                      例子                      结果
  绝对位置路径:                    child::book
                                                     选取所有属于当前节点的子元
                                                     素的 book 节点
     /step/step/...
                             attribute::lang         选取当前节点的 lang 属性
  相对位置路径:
                             child::*                选取当前节点的所有子元素
     step/step/…
                             attribute::*            选取当前节点的所有属性
步(step)包括:
                                                     选取当前节点的所有文本子节
  轴(axes)                    child::text()           点
     定义所选节点与当前节点之间的树关系 child::node()                 选取当前节点的所有子节点
  节点测试(node-test)                                    选取当前节点的所有 book 后
                             descendant::book        代
     识别某个轴内部的节点 零个或者更多
  谓语(predicate)              ancestor::book
                                                     选择当前节点的所有 book 先
                                                     辈
     更深入地提 炼所选的节点集
                                                     选取当前节点的所有book先辈
步的语法:                        ancestor-or-self::      以及当前节点(假如此节点是
                             book                    book节点的话)
  轴名称::节点测试[谓语]
                                                     选取当前节点的所有 price
                             child::*/child::price   孙。
XPath 运算符

运算符       描述        实例                          返回值
|         计算两个节点集   //book | //cd               返回所有带有 book 和 ck 元素的节点集
+         加法        6+4                         10
-         减法        6-4                         2
*         乘法        6*4                         24
div       除法        8 div 4                     2
=         等于        price=9.80
!=        不等于       price!=9.80
<         小于        price<9.80
<=        小于或等于     price<=9.80
>         大于        price>9.80
>=        大于或等于     price>=9.80
or        或         price=9.80 or price=9.70
and       与         price>9.00 and price<9.90
mod       计算除法的余数   5 mod 2                     1



     XPath 实例
参考资料

W3C在线学校
 http://www.w3school.com.cn
 XML by Examples, 2nd Edition
Thanks!

Contenu connexe

En vedette

შემაჯამებელი ტესტი Xii 2
შემაჯამებელი ტესტი Xii 2შემაჯამებელი ტესტი Xii 2
შემაჯამებელი ტესტი Xii 2Jaba Labadze
 
öxidos metálicos.
öxidos metálicos.öxidos metálicos.
öxidos metálicos.Liizbeeth
 
Часть XIII_ Обеспечение Найма И Управление Человеческими Ресурсами
Часть XIII_ Обеспечение Найма И Управление Человеческими Ресурсами Часть XIII_ Обеспечение Найма И Управление Человеческими Ресурсами
Часть XIII_ Обеспечение Найма И Управление Человеческими Ресурсами BellHam
 
Xi mang vicem bim son
Xi mang vicem bim sonXi mang vicem bim son
Xi mang vicem bim sonCuongBHIT
 
XIV Olimpiadas concaic UTalca 2012
XIV Olimpiadas concaic UTalca 2012XIV Olimpiadas concaic UTalca 2012
XIV Olimpiadas concaic UTalca 2012Pablo Contardo
 
Presentación Simposium Liferay 2011
Presentación Simposium Liferay 2011Presentación Simposium Liferay 2011
Presentación Simposium Liferay 2011Jack A. Rider
 
XIV simposio sobre trastorno bipolares
XIV simposio sobre trastorno bipolaresXIV simposio sobre trastorno bipolares
XIV simposio sobre trastorno bipolarescsn15445
 
X Facebook
X FacebookX Facebook
X Facebook123kkk
 

En vedette (17)

Xmaspics
XmaspicsXmaspics
Xmaspics
 
XLIII Fiesta de las Madres
XLIII Fiesta de las MadresXLIII Fiesta de las Madres
XLIII Fiesta de las Madres
 
შემაჯამებელი ტესტი Xii 2
შემაჯამებელი ტესტი Xii 2შემაჯამებელი ტესტი Xii 2
შემაჯამებელი ტესტი Xii 2
 
öxidos metálicos.
öxidos metálicos.öxidos metálicos.
öxidos metálicos.
 
Часть XIII_ Обеспечение Найма И Управление Человеческими Ресурсами
Часть XIII_ Обеспечение Найма И Управление Человеческими Ресурсами Часть XIII_ Обеспечение Найма И Управление Человеческими Ресурсами
Часть XIII_ Обеспечение Найма И Управление Человеческими Ресурсами
 
Xi mang vicem bim son
Xi mang vicem bim sonXi mang vicem bim son
Xi mang vicem bim son
 
XIV Olimpiadas concaic UTalca 2012
XIV Olimpiadas concaic UTalca 2012XIV Olimpiadas concaic UTalca 2012
XIV Olimpiadas concaic UTalca 2012
 
Xerrada Salou Maig 08 Definitiu
Xerrada Salou Maig 08 DefinitiuXerrada Salou Maig 08 Definitiu
Xerrada Salou Maig 08 Definitiu
 
X Eu Europa Desde El Cielo
X Eu Europa Desde El CieloX Eu Europa Desde El Cielo
X Eu Europa Desde El Cielo
 
X iomi
X iomiX iomi
X iomi
 
Presentación Simposium Liferay 2011
Presentación Simposium Liferay 2011Presentación Simposium Liferay 2011
Presentación Simposium Liferay 2011
 
Xeomorfoloxía
XeomorfoloxíaXeomorfoloxía
Xeomorfoloxía
 
XIV simposio sobre trastorno bipolares
XIV simposio sobre trastorno bipolaresXIV simposio sobre trastorno bipolares
XIV simposio sobre trastorno bipolares
 
Xnbfvcthfs
XnbfvcthfsXnbfvcthfs
Xnbfvcthfs
 
X Facebook
X FacebookX Facebook
X Facebook
 
XI Jornada Fòrum Català d'Informació i Salut.Programa en Francès
XI Jornada Fòrum Català d'Informació i Salut.Programa en FrancèsXI Jornada Fòrum Català d'Informació i Salut.Programa en Francès
XI Jornada Fòrum Català d'Informació i Salut.Programa en Francès
 
Xilinx2013d
Xilinx2013dXilinx2013d
Xilinx2013d
 

Similaire à Xml基础培训

Flex 4.5 action data communication
Flex 4.5 action data communicationFlex 4.5 action data communication
Flex 4.5 action data communicationjexchan
 
Free Marker中文文档
Free Marker中文文档Free Marker中文文档
Free Marker中文文档yiditushe
 
Erlang培训
Erlang培训Erlang培训
Erlang培训liu qiang
 
Html基础培训
Html基础培训Html基础培训
Html基础培训fangdeng
 
Python xmlrpc-odoo
Python xmlrpc-odooPython xmlrpc-odoo
Python xmlrpc-odoorobin yang
 
Xsd培训资料
Xsd培训资料Xsd培训资料
Xsd培训资料彦波 叶
 
Android resource-management
Android resource-managementAndroid resource-management
Android resource-managementLucas Xu
 
Somthing You Must Know About XAML
Somthing You Must Know About XAMLSomthing You Must Know About XAML
Somthing You Must Know About XAMLElvisQin
 
解读html
解读html解读html
解读htmlcssrain
 
Swift编程语言入门教程 中文版
Swift编程语言入门教程 中文版Swift编程语言入门教程 中文版
Swift编程语言入门教程 中文版Harvey Zhang
 
JavaScript 脚本控件(二)
JavaScript 脚本控件(二)JavaScript 脚本控件(二)
JavaScript 脚本控件(二)RANK LIU
 

Similaire à Xml基础培训 (20)

Xslt
XsltXslt
Xslt
 
Xslt
XsltXslt
Xslt
 
Flex 4.5 action data communication
Flex 4.5 action data communicationFlex 4.5 action data communication
Flex 4.5 action data communication
 
Js tree
Js treeJs tree
Js tree
 
Free Marker中文文档
Free Marker中文文档Free Marker中文文档
Free Marker中文文档
 
Erlang培训
Erlang培训Erlang培训
Erlang培训
 
Html基础培训
Html基础培训Html基础培训
Html基础培训
 
Python xmlrpc-odoo
Python xmlrpc-odooPython xmlrpc-odoo
Python xmlrpc-odoo
 
Xsd培训资料
Xsd培训资料Xsd培训资料
Xsd培训资料
 
第三章
第三章第三章
第三章
 
Android resource-management
Android resource-managementAndroid resource-management
Android resource-management
 
Somthing You Must Know About XAML
Somthing You Must Know About XAMLSomthing You Must Know About XAML
Somthing You Must Know About XAML
 
Hdcms
HdcmsHdcms
Hdcms
 
Wsdl
WsdlWsdl
Wsdl
 
第四章 串
第四章 串第四章 串
第四章 串
 
解读html
解读html解读html
解读html
 
11
1111
11
 
Swift编程语言入门教程 中文版
Swift编程语言入门教程 中文版Swift编程语言入门教程 中文版
Swift编程语言入门教程 中文版
 
SCJP ch03
SCJP ch03SCJP ch03
SCJP ch03
 
JavaScript 脚本控件(二)
JavaScript 脚本控件(二)JavaScript 脚本控件(二)
JavaScript 脚本控件(二)
 

Dernier

20170104 - transaction_pattern
20170104 - transaction_pattern20170104 - transaction_pattern
20170104 - transaction_patternJamie (Taka) Wang
 
20211119 - demystified artificial intelligence with NLP
20211119 - demystified artificial intelligence with NLP20211119 - demystified artificial intelligence with NLP
20211119 - demystified artificial intelligence with NLPJamie (Taka) Wang
 
20161220 - domain-driven design
20161220 - domain-driven design20161220 - domain-driven design
20161220 - domain-driven designJamie (Taka) Wang
 
SymPy 在微積分上的應用_4.pptx SymPy 在微積分上的應用_4.pptx
SymPy 在微積分上的應用_4.pptx SymPy 在微積分上的應用_4.pptxSymPy 在微積分上的應用_4.pptx SymPy 在微積分上的應用_4.pptx
SymPy 在微積分上的應用_4.pptx SymPy 在微積分上的應用_4.pptxNCU MCL
 

Dernier (9)

20200226 - AI Overview
20200226 - AI Overview20200226 - AI Overview
20200226 - AI Overview
 
20170104 - transaction_pattern
20170104 - transaction_pattern20170104 - transaction_pattern
20170104 - transaction_pattern
 
20211119 - demystified artificial intelligence with NLP
20211119 - demystified artificial intelligence with NLP20211119 - demystified artificial intelligence with NLP
20211119 - demystified artificial intelligence with NLP
 
20161220 - domain-driven design
20161220 - domain-driven design20161220 - domain-driven design
20161220 - domain-driven design
 
20161027 - edge part2
20161027 - edge part220161027 - edge part2
20161027 - edge part2
 
Entities in DCPS (DDS)
Entities in DCPS (DDS)Entities in DCPS (DDS)
Entities in DCPS (DDS)
 
20200323 - AI Intro
20200323 - AI Intro20200323 - AI Intro
20200323 - AI Intro
 
20151111 - IoT Sync Up
20151111 - IoT Sync Up20151111 - IoT Sync Up
20151111 - IoT Sync Up
 
SymPy 在微積分上的應用_4.pptx SymPy 在微積分上的應用_4.pptx
SymPy 在微積分上的應用_4.pptx SymPy 在微積分上的應用_4.pptxSymPy 在微積分上的應用_4.pptx SymPy 在微積分上的應用_4.pptx
SymPy 在微積分上的應用_4.pptx SymPy 在微積分上的應用_4.pptx
 

Xml基础培训

  • 4. What is XML? XML 指可扩展标记语言(Extensible Markup Language) XML 是一种标记语言,很类似 HTML XML 的设计宗旨是传输数据,而非显示数据 XML 标签没有被预定义。你需要自行定义标签。 XML 被设计为具有自我描述性。 XML 是 W3C 的标准
  • 5. XML 与 HTML 的主要差异 XML 不是 HTML 的替代。 XML 和 HTML 为不同的目的而设计: XML 被设计为传输和存储数据,其焦点是数据的内容。 HTML 被设计用来显示数据,其焦点是数据的外观。 HTML 旨在显示信息,而 XML 旨在传输信息。
  • 6. XML 的特点 XML是没有任何行为的 XML 是纯文本 通过 XML 你可以定义自己的标签 XML 是独立于软件和硬件的信息传输工具
  • 7. XML 的用途 XML 把数据从 HTML 分离 XML 简化数据共享和数据传输 XML 简化平台的变更 XML 使你的数据更有用 XML 用于创建新的 Internet 语言 XHTML - 最新的 HTML 版本 WSDL - 用于描述可用的 web service WAP 和 WML - 用于手持设备的标记语言 RSS - 用于 RSS feed 的语言 RDF 和 OWL - 用于描述资源和本体 SMIL - 用于描述针针对 web 的多媒体
  • 8. XML样例 <?xml version="1.0" encoding=“UTF-8" ?> <cd sernum="99999"> <!-- IMHO, a truly great CD --> <title>Yankee Hotel Foxtrot</title> <artist>Wilco</artist> <cover> <file path="/covers/yht.gif”/> </cover> <track no=“4">War on War</track> </cd>
  • 9. 基本语法 以XML声明开始 <?xml version="1.0" encoding=“UTF-8"?> 剩余的部分必须包含在根元素(root element)内 <cd sernum="99999"> … </cd> XML 文档形成一种树结构 元素可以嵌套 元素可以包含子元素和文本,元素可以拥有属性
  • 10. 详细语法规则 所有 XML 元素都须有关闭标签 XML 标签对大小写敏感 XML 必须正确地嵌套 XML 的属性值须加引号 实体引用 拥有特殊意义的字符( "<" 和 "&" )必须用实体引用来代 替 < &lt; > &gt; & &amp; ‘ &apos; “ &quot;
  • 11. 详细语法规则(续) XML 中的注释 <!-- This is a comment --> 在 XML 中,空格会被保留 XML 以 LF 存储换行
  • 12. XML元素 XML 元素指的是从(且包括)开始标签直到(且包括)结束标签的部分 XML 元素必须遵循以下命名规则: 名称可以含字母、数字以及其他的字符 名称不能以数字或者 标点符号开始 名称不能以字符 “xml”(或者 XML、Xml)开始 名称不能包含空格 最佳命名习惯 使名称具有描述性。使用下划 线的名称也很不错。 名称应当比较简短,比如:<book_title>,而不是: <the_title_of_the_book>。 避免 "-" 字符。如果您按照 这样的方式进行命名:"first-name",一些软件会认 为你需要提取第一个单词。 避免 "." 字符。如果您按照 这样的方式进行命名:"first.name",一些软件会认 为 "name" 是对象 "first" 的属性。 避免 “:” 字符。冒号会被 转换为命名空间来使用。
  • 13. XML 属性 XML 属性必须加引号 属性值必须被引号包围,不过单引号和双引号均可使用。 如果属性值本身包含双引号,那么有必要使用单引号包围它 或者可以使用实体引用
  • 14. 子元素 vs. 属性 理论上的差异 子元素是元素的组成部分,属性是元素的额外信息 属性的限制 属性无法包含多个值(子元素可以) 属性无法描述树结构(子元素可以) 属性不易扩展(为未来的变化) 属性难以阅读和维护 作为元数据的 XML 属性 用于标识XML元素的ID 元数据(有关数据的数据)应当存储为属性,而数据本 身应当存储为元素。
  • 15. XML验证 形式完备:拥有正确的语法 XML 文档必须有根元素 XML 文档必须有关闭标签 XML 标签对大小写敏感 XML 元素必须被正确的嵌套 XML 属性必须加引号 合法:满足DTD/Schema定义的约束 XML DTD XML Schema
  • 18. XML CDATA 所有 XML 文档中的文本均会被解析器解析 只有 CDATA 区段(CDATA section)中的文本会被解析器 忽略。 CDATA 区段开始于 "<![CDATA[",结束于 "]]>” <script> <![CDATA[ function matchwo(a,b) { if (a < b && a < 0) CDATA 区段不能包含字符串 "]] { >",所以,CDATA 区段的嵌套是不 return 1 被允许的。 } else { return 0 } } ]]> </script>
  • 20. XML命名空间 XML命名空间可提供避免元素命名冲突的方 法 命名冲突 <table> <tr> <table> <td>Apples</td> <name>Coffee Table</name> <td>Bananas</td> <width>80</width> </tr> <length>120</length> </table> </table>
  • 21. XML命名空间 使用前缀来避免命名冲突 <h:table> <h:tr> <f:table> <h:td>Apples</h:td> <f:name>Coffee Table</f:name> <h:td>Bananas</h:td> <f:width>80</f:width> </h:tr> <f:length>120</f:length> </h:table> </f:table>
  • 22. XML命名空间 使用命名空间来避免命名冲突 <h:table xmlns:h="http://www.w3.org/TR/html4/"> <h:tr> <h:td>Apples</h:td> <h:td>Bananas</h:td> </h:tr> </h:table> <f:table xmlns:f="http://www.w3school.com.cn/furniture"> <f:name>Coffee Table</f:name> <f:width>80</f:width> <f:length>120</f:length> </f:table> 与仅仅使用前缀不同,我们为 <table> 标签添加了一个 xmlns 属性,这样就 为前缀赋予了一个与某个命名空间相关联的限定名称。
  • 23. XML Namespace (xmlns) 属性 XML 命名空间属性被放置于某个元素的开始标签之中, 并使用以下的语法: xmlns:namespace-prefix="namespaceURI" 当一个命名空间被定义在某个元素的开始标签中时,所 有带有相同前缀的子元素都会与同一个命名空间相关 联。 <h:table xmlns:h="http://www.w3.org/TR/html4/"> <f:table xmlns:f="http://www.w3school.com.cn/furniture">
  • 24. 默认的命名空间(Default Namespaces) 为某个元素定义默认的命名空间可以让我 们省去在所有的子元素中使用前缀的工作 <table xmlns="http://www.w3.org/TR/html4/"> <tr> <td>Apples</td> <td>Bananas</td> </tr> </table> <table xmlns="http://www.w3school.com.cn/furniture"> <name>Coffee Table</name> <width>80</width> <length>120</length> </table>
  • 25. 命名空间的实际应用 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring- beans-2.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd" > <bean id=“dataSource” class=“org.springframework.jndi.JndiObjectFactoryBean” > … </bean> ... <aop:config> <aop:advisor pointcut="execution(* com.bill99.seashell.domain..NotifyService.*(..))” advice-ref="notifyTxAdvice" order="1"/> <aop:advisor pointcut="execution(* com.bill99.seashell.domain..*Service.*(..))" advice-ref="txAdvice" order="2"/> </aop:config> <tx:advice id="notifyTxAdvice"> <tx:attributes> <tx:method name="*" propagation="REQUIRES_NEW" rollback-for="java.lang.Exception" /> </tx:attributes> </tx:advice> ... </beans>
  • 27. XML Schema XML Schema 的作用是定义XML文档的合法构建模 块,是DTD的继任者 定义可出现在文档中的元素 定义可出现在元素中的属性 定义哪个元素是子元素 定义子元素的次序 定义子元素的数目 定义元素是否为空,或者是否可包含文本 定义元素和属性的数据类型 定义元素和属性的默认值以及固定值
  • 28. XML Schema vs. DTD XML Schema 可针对未来的需求进行扩展 在其他 Schema 中重复使用您的 Schema 创建由标准类型衍生而来的您自己的数据类型 在相同的文档中引用多重的 Schema XML Schema 基于 XML 编写 XML Schema 支持数据类型 XML Schema 支持命名空间
  • 29. 如何使用 XSD <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:aop=" http://www.springframework.org/schema/aop" xmlns:tx="http://www. springframework.org/schema/tx" 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-2.0.xsd http://www.springframework. org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0. xsd http://www.springframework.org/schema/tx http://www.springframework. org/schema/tx/spring-tx-2.0.xsd" > …… </beans>
  • 30. XSD定义:简单元素与属性 <schema> 元素是每一个 XML Schema 的根元素 XSD 简易元素:只包含文本的元素。它不会包含 任何其他的元素或属性 <xs:element name="xxx" type="yyy"/> XSD 属性:定义属性的语法是: 最常用的类型是: xs:string <xs:attribute name="xxx" type="yyy"/> xs:decimal xs:integer xs:boolean xs:date xs:time
  • 31. XSD 限定 / Facets 对值的限定 限定 描述 定义可接受值的一个列表 enumeration <xs:element name="age“> 定义所允许的最大的小数位数。必须大 fractionDigits 于等于0。 <xs:simpleType> <xs:restriction base="xs:integer"> 定义所允许的字符或者列表项目的精确 length 数目。必须大于或等于0。 <xs:minInclusive value="0"/> <xs:maxInclusive value="120"/> 定义数值的上限。所允许的值必须小于 maxExclusive 此值。 </xs:restriction> </xs:simpleType> 定义数值的上限。所允许的值必须小于 maxInclusive 或等于此值。 </xs:element> 定义所允许的字符或者列表项目的最大 对一组值的限定 maxLength 数目。必须大于或等于0。 定义数值的下限。所允许的值必需大于 minExclusive 此值。 <xs:element name="car" type="carType"/> <xs:simpleType name="carType"> 定义数值的下限。所允许的值必需大于 minInclusive 或等于此值。 <xs:restriction base="xs:string"> <xs:enumeration value="Audi"/> 定义所允许的字符或者列表项目的最小 minLength 数目。必须大于或等于0。 <xs:enumeration value="Golf"/> <xs:enumeration value="BMW"/> pattern 定义可接受的字符的精确序列。 </xs:restriction> 定义所允许的阿拉伯数字的精确位数。 </xs:simpleType> totalDigits 必须大于0。 定义空白字符(换行、回车、空格以及 whiteSpace 制表符)的处理方式。
  • 32. XSD复合元素 空元素 <product prodid="1345" /> 包含其他元素的元素 <person> <firstname>John</firstname> <lastname>Smith</lastname> </person> 仅包含文本的元素 <food type="dessert">Ice cream</food> 包含元素和文本的元素 <description> It happened on <date lang="norwegian">03.03.99</date> .... </description>
  • 33. XSD复合元素定义(Sample) 方式一 <xs:element name="employee"> <xs:complexType> <xs:sequence> <xs:element name="firstname" type="xs:string"/> <xs:element name="lastname" type="xs:string"/> </xs:sequence> </xs:complexType> </xs:element> 方式二 <xs:element name="employee" type="personinfo"/> <xs:complexType name="personinfo"> <xs:sequence> <xs:element name="firstname" type="xs:string"/> <xs:element name="lastname" type="xs:string"/> </xs:sequence> </xs:complexType>
  • 34. XSD复合类型指示器 (Indicators) Order 指示器: All Choice Sequence Occurrence 指示器: maxOccurs minOccurs Group 指示器: 元素组 属性组
  • 35. XSD<any>元素 <any>元素使我们有能力通过未被 schema 规定 的元素来拓展 XML 文档! <xsd:element name="beans"> ... <xsd:complexType> <xsd:sequence> <xsd:element ref="description" minOccurs="0"/> <xsd:choice minOccurs="0" maxOccurs="unbounded"> <xsd:element ref="import"/> <xsd:element ref="alias"/> <xsd:element ref="bean"/> <xsd:any namespace="##other“ processContents="strict“ minOccurs="0" maxOccurs="unbounded"/> </xsd:choice> </xsd:sequence> ... </xsd:complexType> </xsd:element>
  • 36. XSD <anyAttribute> 元素 <anyAttribute> 元素使我们有能力通过未被 schema 规定的属性来扩展 XML 文档
  • 37. XSD 元素替换(Element Substitution) 通过 XML Schema,一个元素可对另一个元素进行替换 <xs:element name="name" type="xs:string"/> <xs:element name="navn" substitutionGroup="name"/> <xs:element name="kunde" substitutionGroup="customer"/> <customer> <name>John Smith</name> </customer> 或类似这样: <kunde> <navn>John Smith</navn> </kunde>
  • 39. XML解析 解析方法 DOM SAX JDOM与DOM4J XML Binding
  • 41. 创建DOM树 <?xml version=“1.0”?> Parse r Dom Tree XML Root Element Child Document Tex Element t Child Tex Element t
  • 43. JDOM与DOM4J JDOM 提供友好的Java API,使用SAX2解析器 DOM4J Dom4j是一个易用的、开源的库,用于XML,XPath 和XSLT。它应用于Java平台,采用了Java集合框 架并完全支持DOM,SAX和JAXP。
  • 46. XSL介绍 XSL 指扩展样式表语言(EXtensible Stylesheet Language) CSS = HTML 样式表 XSL = XML 样式表 XSL 可描述如何来显示 XML 文档! XSL - 不仅仅是样式表语言,XSL 包括三部分: XSLT 一种用于转换 XML 文档的语言。 XPath 一种用于在 XML 文档中 导航的语言。 XSL-FO 一种用于格式化 XML 文档的 语言。
  • 47. XSLT介绍 XSLT 是一种用于将 XML 文档转换为 XHTML 文档或其他 XML 文档的语言。 XSLT 指 XSL 转换(XSL Transformations)。 XSLT 是 XSL 中最重要的部分。 XSLT 可将一种 XML 文档转换为另外一种 XML 文档。 XSLT 使用 XPath 在 XML 文档中进行导航。 XPath 是一个 W3C 标准。 几乎所有主要的浏览器均支持 XML 和 XSLT
  • 48. XSLT - 转换 根元素:<xsl:transform> <xsl:template> 元素 <xsl:value-of>元素 XPath <xsl:value-of select="catalog/cd/title"/> <xsl:for-each> 元素 <xsl:sort> 元素 <xsl:if> 元素 <xsl:choose>、<xsl:when>、<xsl:otherwise> 元素 <xsl:apply-templates> 元素 XSLT实例
  • 49. XPath
  • 50. XPath简介 XPath 是一门在 XML 文档中查找信息的语言。XPath 用 于在 XML 文档中通过元素和属性进行导航。 XPath 使用路径表达式在 XML 文档中进行导航 XPath 包含一个标准函数库 XPath 是 XSLT 中的主要元素 XPath 是一个 W3C 标准
  • 51. XPath术语 节点(Node) 元素、属性、文本、命名空间、处理指令、注释以及文档(根)节点 基本值(或称原子值,Atomic value) 基本值是无父或无子的节点 项目(Item) 项目是基本值或者节点 节点关系 父(Parent) 子(Children) 同胞(Sibling) 先辈(Ancestor) 后代(Descendant)
  • 52. XPath语法 表达式 描述 选取节点 nodename 选取此节点的所有子节点 XPath 使用路径表达 / 从根节点选取 式在 XML 文档中选取 // 从匹配选择的当前节点选择文档中的节 点,而不考虑它们的位置 节点。节点是通过沿 . 选取当前节点 着路径或者 step 来 选取当前节点的父节点 .. 选取的 @ 选取属性 路径表达式 结果 bookstore 选取 bookstore 元素的所有子节点 选取根元素 bookstore /bookstore 注释:假如路径起始于正斜杠( / ),则此路径始终代表到某元素的绝对路径! bookstore/book 选取所有属于 bookstore 的子元素的 book 元素。 //book 选取所有 book 子元素,而不管它们在文档中的位置。 选择所有属于 bookstore 元素的后代的 book 元素,而不管它们位于 bookstore 之下 bookstore//book 的什么位置。 //@lang 选取所有名为 lang 的属性。
  • 53. XPath语法 谓语(Predicates) 谓语用来查找某个特定的节点或 者包含某个指定的值的节点。 谓语被嵌在方括号中。 路径表达式 结果 /bookstore/book[1] 选取属于 bookstore 子元素的第一个 book 元素。 /bookstore/book[last()] 选取属于 bookstore 子元素的最后一个 book 元素。 /bookstore/book[last()-1] 选取属于 bookstore 子元素的倒数第二个 book 元素。 /bookstore/book[position()<3] 选取最前面的两个属于 bookstore 元素的子元素的 book 元素。 //title[@lang] 选取所有拥有名为 lang 的属性的 title 元素。 //title[@lang='eng'] 选取所有 title 元素,且这些元素拥有值为 eng 的 lang 属性。 选取所有 bookstore 元素的 book 元素,且其中的 price 元素的值须大 /bookstore/book[price>35.00] 于 35.00。 选取所有 bookstore 元素中的 book 元素的 title 元素,且其中的 /bookstore/book[price>35.00]/title price 元素的值须大于 35.00。
  • 54. XPath语法 选取未知节点 通配符 描述 * 匹配任何元素节点 XPath 通配符可用来选取未知的 匹配任何属性节点 @* XML 元素 node() 匹配任何类型的节点 选取若干路径 路径表达式 结果 通过在路径表达式中使用“|” /bookstore/* 选取 bookstore 元素的所有子节点 运算符,您可以选取若干个路 //* 选取文档中的所有元素 径 //title[@*] 选取所有带有属性的 title 元素。 路径表达式 结果 //book/title | //book/price 选取所有 book 元素的 title 和 price 元素。 //title | //price 选取所有文档中的 title 和 price 元素。 选取所有属于 bookstore 元素的 book 元素的 title /bookstore/book/title | //price 元素,以及文档中所有的 price 元素。
  • 55. XPath Axes(坐标轴) XPath 轴 轴可定义某个相对于当前节 点的节点集 轴名称 结果 ancestor 选取当前节点的所有先辈(父、祖父等) ancestor-or-self 选取当前节点的所有先辈(父、祖父等)以及当前节点本身 attribute 选取当前节点的所有属性 child 选取当前节点的所有子元素。 descendant 选取当前节点的所有后代元素(子、孙等)。 descendant-or-self 选取当前节点的所有后代元素(子、孙等)以及当前节点本身。 following 选取文档中当前节点的结束标签之后的所有节点。 namespace 选取当前节点的所有命名空间节点 parent 选取当前节点的父节点。 preceding 选取文档中当前节点的开始标签之前的所有节点。 preceding-sibling 选取当前节点之前的所有同级节点。 self 选取当前节点。
  • 56. 位置路径表达式 位置路径表达式 例子 结果 绝对位置路径: child::book 选取所有属于当前节点的子元 素的 book 节点 /step/step/... attribute::lang 选取当前节点的 lang 属性 相对位置路径: child::* 选取当前节点的所有子元素 step/step/… attribute::* 选取当前节点的所有属性 步(step)包括: 选取当前节点的所有文本子节 轴(axes) child::text() 点 定义所选节点与当前节点之间的树关系 child::node() 选取当前节点的所有子节点 节点测试(node-test) 选取当前节点的所有 book 后 descendant::book 代 识别某个轴内部的节点 零个或者更多 谓语(predicate) ancestor::book 选择当前节点的所有 book 先 辈 更深入地提 炼所选的节点集 选取当前节点的所有book先辈 步的语法: ancestor-or-self:: 以及当前节点(假如此节点是 book book节点的话) 轴名称::节点测试[谓语] 选取当前节点的所有 price child::*/child::price 孙。
  • 57. XPath 运算符 运算符 描述 实例 返回值 | 计算两个节点集 //book | //cd 返回所有带有 book 和 ck 元素的节点集 + 加法 6+4 10 - 减法 6-4 2 * 乘法 6*4 24 div 除法 8 div 4 2 = 等于 price=9.80 != 不等于 price!=9.80 < 小于 price<9.80 <= 小于或等于 price<=9.80 > 大于 price>9.80 >= 大于或等于 price>=9.80 or 或 price=9.80 or price=9.70 and 与 price>9.00 and price<9.90 mod 计算除法的余数 5 mod 2 1 XPath 实例