再问一个问题:请看下面:问题是:两个如何区分??? 这种写法不对,该如何写???

itbook 2002-12-22 02:39:48
请看下面:问题是:两个<xsl:apply-templates select="HandNav/data"/>如何区分???
这种写法不对,该如何写???
<?xml version="1.0" encoding="GB2312"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl"
xmlns="http://www.w3.org/TR/REC-html40"
result-ns="">
<xsl:template>
<body match='/'>
id=<xsl:apply-templates select="HandNav/data"/> /////////
name=<xsl:apply-templates select="HandNav/data"/> /////////
</body>
</xsl:template>

<xsl:template match='HandNav/data'> ///
<xsl:value-of select="id"/>
</xsl:template>

<xsl:template match='HandNav/data'> ///
<xsl:apply-templates select="name"/>
</xsl:template>
...全文
102 4 打赏 收藏 举报
写回复
4 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
全息宇宙 2002-12-23
xsl:apply-templates元素
要达到根节点以外的地方,就要告诉格式化引擎处理根节点的子节点。一般来说,为了包括子节点中的内容,需递归处理整个XML文档中的节点。可以用来达到此目的的元素就是xsl:apply-templates。把xsl:apply-templates放在输出模板中,就可以告诉格式化程序把与源元素匹配的每个子元素同样式单中的模板相比较。用于匹配节点的模板本身可能包含xsl:apply-templates元素,以便搜索与其子节点的匹配。当格式化引擎处理节点时,此节点是作为整个树形结构来看待的。这是树形结构的优点所在。每个部分都是以处理整体相同的方式来处理。例如,清单14-5就是使用xsl:apply-templates元素来处理子节点的XSL样式单。

清单14-5:递归处理根下子节点的XSL样式单

<?xml version="1.0"?>

<xsl:stylesheet

xmlns:xsl="http://www.w3.org/XSL/Transform/1.0">


<xsl:template match="/">

<html>


<xsl:apply-templates/>

</html>

</xsl:template>


<xsl:template match="PERIODIC_TABLE">

<body>

<xsl:apply-templates/>

</body>

</xsl:template>


<xsl:template match="ATOM">

An Atom

</xsl:template>


</xsl:stylesheet>

当本样式单应用于清单14-1时,将进行以下处理:

1.将根节点与样式单中的所有模板规则进行比较,它与第一个模板规则相匹配。

2.写出<html>标记。

3.xsl:apply-templates元素使格式化引擎处理子节点。

A.将根节点的第一个子节点(xml-stylesheet指令)与模板规则相比较,此子节点与任何一个模板规则都不匹配,所以不产生任何输出。

B.将根节点的第二个子节点(根元素PERIODIC_TABLE)与模板规则相比较,此子节点与第二个模板规则相匹配。

C.写出<body>标记。

D.body元素中的xsl:apply-templates元素使格式化引擎处理PERIODIC_TABLE的子节点。

a.将PERIODIC_TABLE元素的第一个子元素(即氢的ATOM元素)与模板规则进行比较,此子元素与第三个模板规则相匹配。

b.输出文本An Atom。

c.将PERIODIC_TABLE元素的第二个子元素(即氦的ATOM元素)与模板规则进行比较,此子元素与第三个模板规则相匹配。

d.输出文本An Atom。

E.写出</body>标记。

4.写出</html>标记。

5.处理完成。

最后的结果为:

<html><body>


An Atom


 

An Atom


</body></html>

  • 打赏
  • 举报
回复
YeeDRain 2002-12-22
<?xml version="1.0" encoding="GB2312"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl"
xmlns="http://www.w3.org/TR/REC-html40"
result-ns="">
<xsl:template match="HandNav/data">
<body>
id=<xsl:value-of select="id"/>
name=<xsl:value-of select="name"/>
</body>
</xsl:template>
  • 打赏
  • 举报
回复
wangwenyou 2002-12-22
你可以使用mode
<xsl:template match='HandNav/data' mode="mode1">
<xsl:template match='HandNav/data' mode="mode2">
<xsl:template match='HandNav/data' mode="moden">
调用时
<xsl:apply-templates select="HandNav/data" mode="mode1"/>
<xsl:apply-templates select="HandNav/data" mode="mode2"/>
  • 打赏
  • 举报
回复
czy412 2002-12-22
你这样写应该是不正确的,这是你写的吗?

你要取的那两个节点的值可以有好多方法呀!

  • 打赏
  • 举报
回复
发帖
XML/XSL

8872

社区成员

XML/XSL相关问题讨论专区
社区管理员
  • XML/XSL社区
加入社区
帖子事件
创建了帖子
2002-12-22 02:39
社区公告
暂无公告