`
zybing
  • 浏览: 445095 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

[XML]Xsl知识

 
阅读更多

Xsl学习

<?xml version="1.0" encoding="GB2312"?>

<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">

 

 

 

 

 

 

 

参考微软的"XSL开发者指南",我们大致可将模式语言分为三种:

 

选择模式:

<xsl:for-each><xsl:value-of> <xsl:apply-templates>

 

测试模式:

条件判断<xsl:if>与多条件判断<xsl:choose><xsl:when>

 

匹配模式:

<xsl:template>

 

 

 

一、 选择模式

   选择模式语句将数据从XML中提取出来,是一种简单获得数据的方法,这几个标记都有一个select属性,选取XML中特定的结点名的数据。

   1<xsl:for-each>

   如在XML中有这样的数据:

<author>

<name>小禹</name>

<name>春华</name>

<name>秋实</name>

</author>

 

 

   我们要读取这三个作者名字,是一个一个地按"author/name"方法来读取吗,可有多个这样的name呀?如果有一种程序性的语句来循环读取有多好啊!

   想得很对,XSL提供了这样的具有程序语言性质的语句:<xsl:for-each>

   用它读取这三个作者名字的方法如下:

<xsl:for-each select="author/name">

……

</xsl:for-each>

   select,顾名思义,选取,它可以选定XML中特定唯一的标记,也可以选择某一类相同的标记,我们称之为结点集。

   语法:

<xsl:for-each select="pattern" order-by="sort-criteria-list">

   属性:

   1.select

   根据XSL样式查询考察上下文以决定哪类结点集(满足select条件)使用此样式描述。作为一种简化的表示就是,如果你想对文档中的某一种标记的内容的显示方式进行格式化,就可以将让select等于此元素的标记名。例如欲对标记xml_mark进行格式化,即可用如下方式表示:

<xsl:for-each select="xml_mark">

<!--样式定义-->

</xsl:for-each>

   2.order-by

   以分号(;)分隔、作为排序标准的列表。在列表元素前添加加号(+)表示按此标记的内容以升序排序,添加减号(-)表示逆序排序。作为一种简化的表示就是,排序标准列表就是由select规定的标记的子标记的序列,每个标记之间以(;)分隔。

 

 

2<xsl:value-of>

   <xsl:for-each>模式只是选取节点,并没有取出节点的值,好比猴子只是爬到了树的某个枝干上,那么就用< xsl:value-of >来摘"胜利果实"吧!

   语法:

<xsl:value-of select="pattern">提取节点的值

   属性:

   select用来与当前上下文匹配的XSL式样。简单的讲,如果要在XSL文档某处插入某个XML标记(假定是xml_mark标记)的内容,可用如下方式表示:

<xsl:value-of select="xml_mark"></xsl:value-of>

  

<xsl:value-of select="xml_mark"/>

示例:

   此处仍以上期的个人简历的作为例子,我们需要对文件(个人简历.xml)作一定修改,确切的说是将其中的第二行:

<?xml-stylesheet type="text/css" href="resume.css"?>

   修改为:

<?xml-stylesheet type="text/xsl" href="resume.xsl"?>

   然后建立一个新文件:resume.xsl,其内容如下:

<?xml version="1.0" encoding="GB2312"?>

<HTML xmlns:xsl="http://www.w3.org/TR/WD-xsl">

<HEAD>

<TITLE>个人简历</TITLE>

</HEAD><BODY>

<xsl:for-each select="resume">

<P/>

<TABLE border="1" cellspacing="0">

<CAPTION style="font-size: 150%; font-weight: bold">

个人简历

</CAPTION>

<TR>

<TH>姓名</TH><TD><xsl:value-of select="name"/></TD>

<TH>性别</TH><TD><xsl:value-of select="sex"/></TD>

<TH>生日</TH><TD><xsl:value-of select="birthday"/></TD>

</TR>

<TR>

<TH>技能</TH><TD colspan="5"><xsl:value-of select="skill"/></TD>

</TR>

</TABLE>

</xsl:for-each>

</BODY>

</HTML>

 

 

 

数据xml文件:

<?xml version="1.0" encoding="GB2312"?>

<resume>

<name>禹希初</name>

<sex></sex>

<birthday>1977.5</birthday>

<skill>数据库设计与维护、WEB开发</skill>

</resume>

 

 

 

 

Template

装集装箱--书写模板(块):<xsl:template>

语法:

<xsl:template match="node-context" language="language-name">

 

属性:

match ── 确定什么样的情况下执行此模板。作为一种简化的说明,在此处使用标记的名字;其中最上层模板必须将match设为"/"

language ── 确定在此模板中执行什么脚本语言,其取值与HTML中的SCRIPT标记的LANGUAGE属性的取值相同,缺省值是Jscript

<xsl:template>match属性从XML选取满足条件的节点,征对这些特定的节点形成一个特定输出形式的模板。

 

吊集装箱上船--调用模板(块):<xsl:apply-templates>

语法:

<xsl:apply-templates select="pattern" order-by="sort-criteria-list">

属性:

select ── 确定在此上下文环境中应执行什么模板,即选取用< xsl:template >标记建立的模板(块)。

order-by ── 以分号(;)分隔的排序标准,通常是子标记的序列。

 

注意:如果XML文档中不同标记有同名的子标记,在为其编写模板时,应把父标记作为其前缀,格式为(parent_mark/child_mark)。模板文件必须有一个根模板,其属性match"/"

 

 

 

 

测试模式:

条件判断<xsl:if>与多条件判断<xsl:choose><xsl:when>

 

 

 

<xsl:if>的语法结构:

语法:

<xsl:if expr="script-expression" language="language-name" test="pattern">

属性:

expr ── 脚本语言表达式,计算结果为"""";如果结果为"",且通过test,则在输出中显示其中内容(可省略此项属性)。

language ── expr属性中表达式的脚本语言类型,其取值与HTML标记SCRIPTLANGUAGE属性的取值相同,缺省为"JScript"

 test ──源数据测试条件。

 

<xsl:if test=".[value()$le$20]">

$le$ ── 是关系运算符中的"小于等于",其它关系有小于($lt$)、大于($gt$)、大于等于($ge$)、等于($eq$)、不等于($ne$)等。

. ── 表示引用当前标记。

[ ] ── 表示筛选,只有满足筛选条件的标记才能被选取。

value() ──XSL函数,其他常用XSL函数有text()end()index()等。

 

 

 

<xsl:choose>

   语法:<xsl:choose>

   属性:无,表示一个多选测试的开始

 

<xsl:when>

   语法:

<xsl:when expr="script-expression" language="language-name" test="pattern">

   属性:

   expr ── 脚本语言表达式,计算结果为"""";如果结果为"",且通过test,则在输出中显示其中内容(可省略此项属性)。

   language ── expr属性中表达式的脚本语言类型,其取值与HTML标记SCRIPTLANGUAGE属性的取值相同,缺省为"JScript"

   test ── 源数据测试条件。

 

<xsl:otherwise>

   语法:<xsl:otherwise>

   属性:无,在一个多选测试中,如果没有不满足<xsl:when>规定的条件,如果在最后有此标记,则输出此标记中的内容。

 

<xsl:choose>

<xsl:when test=".[value()$gt$85]">优秀</xsl:when>

<xsl:when test=".[value()$gt$70]">一般</xsl:when>

<xsl:when test=".[value()$gt$60]">起格</xsl:when>

<xsl:otherwise>不起格</xsl:otherwise>

</xsl:choose>

 

 

 

XSL的运算符

表一、运算符与特殊字符

 运算符

描述

/

选择子元素,返回左侧元素的直接子元素;如果"/"位于最左侧表示选择根结点的直接子元素

//

递归下降,不论深度,搜索指定的元素;如果位于最左侧表示从根结点出发递归下降搜索指定元素

.

表示当前元素

*

通配符,选择任意元素,不考虑名字

@

取得属性值,作为属性名的前缀

@*

通配符,选择任意属性,不考虑名字

:

名字作用范围分隔符,将名字作用范围前缀与元素或属性名分隔开来

!*

在相关节点上应用指定方法

()*

分组,明确指定优先顺序

[]

应用过滤样式

[]*

下标运算符,用于在集合中指示元素

表二、逻辑运算符

 可选方式

描述

and $and$ &&

逻辑与

or $or$ ||

逻辑或

not() $not$

逻辑非

表三、关系运算符

 可选方式

描述

= $eq$

相等

= $ieq$

相等(不区分大小写)

!= $ne$

不等

$ine$

不等(不区分大小写)

< $lt$

小于

$ilt$

小于(不区分大小写)

<= $le$

小于等于

$ile$

小于等于(不区分大小写)

> $gt$

大于

$igt$

大于(不区分大小写)

>= $ge$

大于等于

$ige$

大于等于(不区分大小写)

$all$

集合运算符,如果集合中所有项目均满足条件则返回""

$any$

集合运算符,如果集合中任意项目满足条件则返回""

|

集合运算符,返回两个集合的联合

 

 

 

 

例子:

 

文档:

<document>
<resume>
<name>name</name>
<sex>sex</sex>
<birthday>birthday</birthday>
<skill>skill1</skill>
<skill>skill2</skill2>

<skill>skilln</skill>
</resume>
<resume>

</resume>

</document>

 

 

个人简历中寻找具有具有"WEB开发"技能的人的姓名与E-Mail

 

<xsl:for-each select="resume [$any$skill="WEB开发"]">

1.[ ] ── 表示选择条件,只有满足条件的个人简历才被显示。

2.$any$ ── 由于每个人有多种技能,故加$any$作为前缀,以使每个人所有技能都能被比较。

3.skill='WEB开发' ── 筛选条件。

 

 

 

如果欲选择1977/1/1之前出生的人的姓名、技能与E-Mail,相应的XSL文档结构如下(假定生日格式为yyyy/mm/dd):

 

<xsl:for-each select="resume[birthday$lt$"1977/1/1"]">

1.birthday $lt$ '1977/1/1' ── 搜索条件,在此处使用"< "会错误,故使用"$lt$"表示小于。

2.skill [0] ── 表示选择skill的第一项。

3.skill [index()>0] ── 表示选择skill的第二项以后(包括第二项)的项目。

4.xsl:value-of select="." ── 表示选择当前标记的值。

 

 

函数

一、end()

含义:返回集合中最后一个元素。

示例:输出最后一份简历

假定XML文件格式为:

……<resume>…</resume>……<resume>…</resume>……

相应XSL文件内容为:

<xsl:for-each select="resume[end()]">……</xsl:for-each>

 

或:

<xsl:templates match="resume[end()]">……</xsl:templates>

 

或:

<xsl:apply-template select="resume[end()]">……</xsl:apply-template>

 

二、index()

含义:返回该元素在集合中的位置,返回值是一整数,其中第一个元素返回0

示例:返回前面三份简历。

resume[index()$le$3]

注意:index()是与父元素相关的,请看下例:

 

<x>

<y/>

<y/>

</x>

<x>

<y/>

<y/>

</x>

 

返回所有<x>中的第一个<y>

x/y[index()=0] x/y[0]

 

三、nodeName()

含义:返回元素的名字,即标记名。

示例:选择任意元素,假如其名字(即标记名)等于"name"

*[nodeName()='name'] *[name]

 

四、number()

含义:将值转换为数值形式,如果不是数值则返回空,要求参数。

示例:年龄(age)小于30岁的人的简历(resume)

resume[number(age)$lt$30] resume[age$lt$30]

 

五、nodeType()

 

含义:返回结点类型,结果为是数值。以下是返回值列表:

 结点类型

 结点类型值

 结点的字符形式描述

 Element

 1

 'element'

 Element Attribute

 2

 'attribute'

 Markup-Delimited Region of Text

 3

 'text'

 Processing Instruction

 7

 'processing_instruction'

 Comment

 8

 'comment'

 Document Entity

 9

 'document'

 

 

六、value()

含义:返回元素或属性的值。

示例:value()是元素或属性的缺省方法,以下表示是等价:

name!value()="NAME" name="NAME"

@attr="attribute_value" @attr="attribute_value"

注:@是属性前缀,@attr表示是属性attr

 

七、attribute()

含义:返回所有属性结点的集合,等价于"@*"

示例:寻找所有的resume元素,满足条件至少有一个属性的值为"ABC"

resume[$any$attribute()='ABC'] resume[$any$@*='ABC']

寻找所有的resume元素,满足条件至少有一个子元素有一个属性的值为"ABC"

resume[$any$*/attribute()='ABC'] resume[$any$*/@*='ABC']

 

八、comment()

含义:返回所有注释结点。

示例:

resume[$any$comment()='禹希初的简历']

表示寻找含有注释语句:<!--禹希初的简历--><resume>元素。

 

九、cdata()

含义:返回所有CDATA类型的结点的集合。

示例:

resume[$any$cdata()='禹希初的简历']

表示寻找含有下述语句(必须是直接子结点)<![CDATA[禹希初的简历]]><resume>元素。

 

十、node()

含义:返回当前上下文环境中除根结点和属性结点以外的所有结点的集合,等价于:

"*|pi()|comment()|text()"

示例:寻找所有元素resume,其最后一个结点的名字为"skill"

resume[node()[end()]!nodeName()='skill']

寻找所有resume元素的第一个结点:resume/node()[0]

 

十一、textnode()

含义:返回所有文本类型的结点的集合。

示例:寻找每一个p元素的第二个文本结点:

p/textnode(1) p!textnode(1)

 

十二、text()

含义:返回所有表示文本字符串的结点的集合,等价于"cdata()|textnode()"

 

 

xsl中使用脚本

<xsl:eval>

含义:计算脚本表达式,输出一个文本字符串。

语法:

<xsl:eval language="language-name">

属性:

language ── 规定所用脚本语言的名字,可用的属性有"JavaScript""JScript""VBScript""VBS"等,缺省为"JScript"

 

<xsl:script>

含义:声明全局变量或定义函数。

语法:

<xsl:script language="language-name">

属性:同<xsl:eval>

 

 

<xsl:script>定义函数, <xsl:eval>使用函数

 

 

可以在脚本中使用的函数:

多个XSL对于VBScriptJScript增加的方法、属性,以充分发挥XML的优势,用于<xsl:script><xsl:eval>标记内表达式的编写或<xsl:if><xsl:when>expr属性。

 

一、absoluteChildNumber

含义:返回结点相对于它所有的兄弟(不论名字是否相同)的序号。

语法:absoluteChildNumber(node)

参数:node ── 对象,欲返回编号的结点。

 

示例:

1、假定文档结构为:

<document>

   <head/>

   <body/>

</document>

其中document为顶层结点,下述表达式将输出:

<xsl:eval>

absoluteChildNumber(this.selectNodes('/document/body').item(0))

</xsl:eval>

 

2、确定当前结点相对于其所有兄弟的序号:

<xsl:eval>

absoluteChildNumber(this)

</xsl:eval>

 

二、ancestorChildNumber

含义:从给定结点出发根据给定祖先结点名返回最近的祖先结点的序号(相对于同名结点)。如果找不祖先,则返回0

语法:ancestorChildNumber(bstrNodeName, pNode)

参数:

bstrNodeName ── 字符串。被搜索的祖先结点的名字。

pNode ── 对象。搜索开始位置的结点。

示例查找当前结点最近的名为report祖先结点:

 

ancestorChildNumber('report',this)

 

三、attributes

含义:返回结点属性的集合。

语法:object.attributes

参数:object ── 结点对象。

示例:当前结点属性的个数

this.attributes.length

 

当前结点第三个属性的值

this.attributs.item(2).value

this.attributes.item(2).text

this.attributes(2).text

注意:如果给定的下标大于属性总和减1将出错,第一个属性的下标是0

 

四、baseName

含义:返回有名字空间限制的基本名,即不包括名字前缀。

语法:object.baseName

参数:object ── 结点对象

 

示例,当前结点的基本名:

this.baseName

 

五、childNumber

含义:返回结点相对于同名同胞的序号。

语法:childNumber(object)

参数:object ── 结点对象

示例,假定XML文档结构如下:

<x><y><z></z></y></x>

 

如果当前结点是z,则childNumber(this)返回1,而absoluteChildNumber(this)返回3

 

六、dataType

含义:设定或读取结点的数据类型。

语法:设定结点的数据类型 object.dataType=objValue

      读取结点的数据类型 objValue=object.dataType

参数:object ── 结点对象。

   示例,读取当前结点的数据类型:

 

dtType=this.dataType

 

七、depth

 

含义:指定结点出现在文档树上的深度,即该结点位于文档第几层,顶层结点位于第一层,根结点(即用"/"表示的结点)位于第0层。

语法:depth(pNode)

参数:pNode ── 结点对象

示例,当前结点的深度:

depth(this)

 

八、firstChildlastChild

含义:返回结点的第一个子结点(或最后一个子结点)。

语法:pNode.firstChild

      pNode.lastChild

参数:pNode ── 结点对象

示例,当前结点的第一个结点的名字:

this.firstChild.nodeName

 

九、formatIndex

含义:用指定的计数系统格式化提供的整数。

语法:formatIndex(lIndex, bstrFormat)

参数:

lIndex ── 整型数值或变量

bstrFormat ── 数据格式,可选值有aAiI101(以0打头的数值形式,如果要求固定长度的编号如00010002则非常有用)。

示例,当前结点的大写罗马数字编号:

formatIndex(childNumber(this),'I')

 

十、formatNumber

含义:以指定格式输出数值。

语法:formatNumber(dblNumber, bstrFormat)

参数:说明同formatNumber,不同之处在于格式化的可以是小数。

示例,对变量a的值格式化为两位小数:

formatNumber(a,'#.00')

 

十一、hasChildNodes

含义:如果结点有子结点则返回true-1),否则为false0)。

语法:pNode.hasChildNodes()

注意:与此前介绍的函数不同,此函数后必须带一个空括号。

示例,判断当前结点是否有子结点:

this.hasChildNodes

 

十二、namespaceURIprefix

含义:返回结点名字空间的全局资源标识符(或前缀)。

语法:pNode.namespaceURI

      pNode.prifix

 

十三、nextSiblingpreviousSiblingparentNode

含义:返回结点的下一个兄弟(或前一个兄弟、或结点的父结点)。

语法:pNode.nextSibling

      pNode.previousSibling

      pNode.parentNode

 

注意:对根结点(即"/")应用parentNode方法、对第一个孩子结点应用previousSibling方法、对最后一个孩子结点应用nextSibling方法均会导致错误,可通过此过关系运算符==(等于)和!=(不等于)来判断一个结点是否某一指定结点,格式为pNode1 = pNode2pNode2 != pNode2

 

十四、nodeName

含义:返回元素、属性、入口的名字或其他类型结点的一个特定字符串。

语法:pNode.nodeName

示例,当前结点的名字:

this.nodeName

 

十五、nodeTypeNodeTypeString

含义:返回结点的类型的数值形式(或字符串形式)。

   语法:pNode.nodeType pNode.nodeTypeString

 

 

 结点类型

 结点类型值

 结点的字符形式描述

 Element

 1

 'element'

 Element Attribute

 2

 'attribute'

 Markup-Delimited Region of Text

 3

 'text'

 Processing Instruction

 7

 'processing_instruction'

 Comment

 8

 'comment'

 Document Entity

 9

 'document'

 

 

十六、nodeTypedValue

含义:以结点预定义的数据类型返回结点的值。

语法:pNode.nodeTypedValue

 

示例,假定当前结点的数据类型是fixed.14.4,下例将以数值返回结点的值,而不是文本一个字符串:

this.nodeTypedValue

 

十七、nodeValue

含义:返回结点的文本。

语法:pNode.nodeValue

注意:该方法不用于元素类结点,可用于属性、CDATA、注释、文本等结点。

示例,当前元素第一个属性的值:

this.attributes(0).nodeValue

当前元素内的文本(假定该元素内只有文本,无其它元素,即<mark>text</mark>,建议多尝几次掌握其确切的用法)。

this.firstChild.nodeValue

 

十八、ownerDocument

含义:返回包含该结点的文档的根。

语法:pNode.ownerDocument

注意:该方法用于文档的根结点将出错。

 

十九、selectNodes

含义:给定的样式匹配应用于当前结点并返回匹配的结点集合。

语法:pNode.selectNodes('pattern')

提示:pattern的编写与<xsl:for-each>select属性的值类似,其中以"/"开头表示从文档的根出发搜索;以"//"开头表遍历文档的所有结点;以".."开头表示从当前结点的父结点开始;如果欲从当前结点向下搜索则不能有以上特殊字符打头。

示例,与当前结点同名的元素在其父元素内的个数:

childNumber(this.selectNodes("../"+this.nodeName+"[end()]").item(0))

当前元素内名字为"skill"的元素的个数:

childNumber(this.selectNodes("skill[end()]").item(0))

 

二十、selectSingleNode

含义:与selectNodes类似,不同的只返回匹配的第一个结点、而不是结点集合。

语法:pNode.selectSingleNode('pattern')

示例,与当前结点同名的元素在其父元素内的个数:

childNumber(this.selectSingleNode("../"+this.nodeName+"[end()]"))

当前元素内名字为"skill"的元素的个数:

childNumber(this.selectSingleNode("skill[end()]"))

 

二十一、text

含义:返回结点与它的子树内的文字内容。

语法:pNode.text

示例,整个文档内的文字内容:

this.ownerDocument.text

当前元素及其子树的文字内容:

this.text

 

二十二、xml

含义:返回结点及其后代的XML表示。

语法:pNode.xml

示例,当前文档的XML内容:

this.ownerDocument.xml

 

另有几个函数不作介绍,列于其下以供参考,如感兴趣,请访问http://msdn.microsoft.com获取详细说明。

 

formatTime(varTime, bstrFormat,varDestLocale)

formatDate(varDate, bstrFormat,varDestLocale)

apendChild(newChild)

definition

CloneNode

insertBefore(newChild, refChild)

parsed

removeChild(oldChild)

replaceChild(newChild, oldChild)

specified

transformNode(stylesheet)

transformNodeToObject(stylesheet,outputObject)

uniqueID(pNode)

 

 

分享到:
评论

相关推荐

    XML技术教学大纲

    通过本课程的学习,使学生掌握XML应用基础知识,具备使用XML开发Web站点必备的基础知识、在XML中如何使用DTD,XML Schema知识、XML样式表、使用CSS格式格式化XML,XSL样式表,名称空间、XML DOM与XPath,以及XML的...

    运用XML Spy新建XML Schema的教程

    压缩包里详细介绍了如何利用XML Spy这个软件新建一个XML Schema文档,内容非常充实,在网上找了很久自己整理好的,只要按照文档的步骤就可以很快学会如何使用XML Spy了,非常适合初次接触XML知识和XML Spy这个软件的...

    XML基础知识

    简单的XML知识,其中包括架构、CSS、schema以及XSL转换成XML文档

    Java and XML, 3rd Edition

    本书的前两章回顾有关XML的基础知识,包括XPath、XSL、DTD以及XML Schema,其余部分专注于讲述如何在Java程序内使用XML。《Java与XML》(第三版)的内容涵盖了所有主要的Java XML处理库程序,全面讲解了SAX、DOM...

    XML手册(第四版)pdf格式

    分别包括XML基础知识、文档类型定义的创建、实体、XML的高级特征以及XML规范等核心教程内容;名称空间、数据类型以及XML模式等教程内容;XPath,XSLT,XSL-FO,XPointer以及XLink等变换和导航教程内容。最后以资源...

    XML手册(第四版)pdf格式Part2/3

    分别包括XML基础知识、文档类型定义的创建、实体、XML的高级特征以及XML规范等核心教程内容;名称空间、数据类型以及XML模式等教程内容;XPath,XSLT,XSL-FO,XPointer以及XLink等变换和导航教程内容。最后以资源...

    XML手册(第四版)pdf格式 part3/3

    分别包括XML基础知识、文档类型定义的创建、实体、XML的高级特征以及XML规范等核心教程内容;名称空间、数据类型以及XML模式等教程内容;XPath,XSLT,XSL-FO,XPointer以及XLink等变换和导航教程内容。最后以资源...

    JAVA与XML.rar

    本书的前两章回顾有关XML的基础知识,包括XPath、XSL、DTD以及XML Schema,其余部分专注于讲述如何在Java程序内使用XML。《Java与XML》(第三版)的内容涵盖了所有主要的Java XML处理库程序,全面讲解了SAX、DOM、...

    C# XML入门经典

     本书适合于有一定的C#编程经验但又想了解XML知识的开发人员。  目录:  第1章 在C#中使用XML的原因  第2章 XML概述  第3章 在.NET中使用XML  第4章 在.NET中读取XML  第5章 在.NET中编写XML ...

    循序渐进学习XML(网页格式)

    如果你已经具备了XML的基础,想深入了解XML和相关知识,如Schema、XSL等,请阅读进阶篇 ;如果您想利用XML进行实践和应用,请阅读实战篇,这里将提供XML的应用实例和共享XML编程经验;我们还建议熟悉XML的朋友阅读精通篇,...

    C#XML入门经典 C#编程人员必备的XML技能.part2

    XML模式——背景知识、语言和一般用法 &lt;br&gt;10.1 XML模式(XSD)的任务 10.2 格式良好且有效的XML模式 10.3 什么是模式 10.4 XML模式定义语言 10.4.1 XSD中的元素 10.4.2 定义属性 10.5 XML模式...

    XML轻松学习手册--XML肯定是未来的发展趋势,不论是网页设计师还是网络程序员,都应该及时学习和了解

    单独用XMl不能显示页面,我们使用格式化技术,比如CSS或者XSL,才能显示XML标记创建的文档。 我们在前面第一章讲到XML是将数据和格式分离的。XML文档本身不知道如何来显示,必须有辅助文件来帮助实现。(XML取消了...

    XML 学习指南中文版(PDF)

    XML学习指南,极适合新手学习,其中样式表、处理指令和CDATA、DTD子集、级联样式表、XSL模版等XML基本知识都有详细介绍及教学,本书将有助你开发ASP.NET+XML网络程序时遇到的XML方方面面的问题

    XML学习指南 电子书

    第7章讨论级联样式表(cascading style sheet)—最简单,但是最受限的样式表类型—而第10章介绍使用XSL(扩展样式表语言,Extensible Stylesheet Language),一种用XML编写的更高级、更灵活的样式表类型。...

    XML 学习指南中文版(PDF)简介

    XML 学习指南中文版...XML学习指南,极适合新手学习,其中样式表、处理指令和CDATA、DTD子集、级联样式表、XSL模版等XML基本知识都有详细介绍及教学,本书将有助你开发ASP.NET+XML网络程序时遇到的XML方方面面的问题

    XML 学习指南中文版(PDF).rar

    XML学习指南,极适合新手学习,其中样式表、处理指令和CDATA、DTD子集、级联样式表、XSL模版等XML基本知识都有详细介绍及教学,本书将有助你开发ASP.NET XML网络程序时遇到的XML方方面面的问题

    XML学习指南经典中文版

    第7章讨论级联样式表(cascading style sheet)—最简单,但是最受限的样式表类型—而第10章介绍使用XSL(扩展样式表语言,Extensible Stylesheet Language),一种用XML编写的更高级、更灵活的样式表类型。...

    XML学习指南!!!!!!!!!!!!!!!!!!!!!!!!!!!

    第7章讨论级联样式表(cascading style sheet)—最简单,但是最受限的样式表类型—而第10章介绍使用XSL(扩展样式表语言,Extensible Stylesheet Language),一种用XML编写的更高级、更灵活的样式表类型。...

    xml3个小任务-不凡不弃.zip

    2)写出一个XSLT式样单,将该XML文档实例转换成XSL-FO,再采用FOP将上述文档转换成PDF格式,尽量与上述新闻的版式相同。 3)采用RDFa标注FO格式的新闻中的实体(人名、地名、机构名、事件名和时间),并参考GRDDL将...

    XML高级编程

    不管我们使用的是CSS还是XSL,我们将样式单中的数据应用到XML文档中的数据上,以产生适合人们阅读的可视化显示。第8章(链接和查询)将以此为线索开始。这是因为查询技术的一个子集允许编程者指定一个标准集,用来...

Global site tag (gtag.js) - Google Analytics