CSDN 论坛 XSL 中有一句不明白,求解!!!

Triumph 2005-08-19 03:05:26
在XSL样式表中显示发言内容的模板:
<xsl:template match="Content">
<table style="TABLE-LAYOUT: fixed" width="610" cellpadding="3">
<tr>
<td>
<xsl:element name="textarea">
<xsl:attribute name="class">content</xsl:attribute>
<xsl:attribute name="readonly">true</xsl:attribute>
<xsl:apply-templates />
</xsl:element>
</td>
</tr>
</table>
</xsl:template>

其它很好理解,但模板第八行:
<xsl:apply-templates />
就不理解了。这里使用的是什么模板?
...全文
488 17 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
firelove 2005-11-19
  • 打赏
  • 举报
回复
TO ;cds27(冰封)
真是個強人.學習
donghid 2005-11-16
  • 打赏
  • 举报
回复
冰封的解释是正确的.xml一切均是节点.
但是元素内的文本节点很容易让初学者困惑,常常对着元素节点就用nodeValue来取其的值.
skyhaha 2005-11-16
  • 打赏
  • 举报
回复
相当于调用系统的默认模板,如果你现在写了一个XSL但是里面没有对任何节点进行处理的话,系统就会调用从跟节点开始的<xsl:apply-templates/>默认模板,会把XML文件的所有内容显示出来.
net205 2005-09-25
  • 打赏
  • 举报
回复
<a/>
<name>Albert</name>
晕,我怎么这么菜,还是看不懂,,一个在<>里,一个在<>内,元素跟text节点的区别吧????
cocainy 2005-09-21
  • 打赏
  • 举报
回复
明白了些,多谢多谢。
关键是那个Text节点的默认Template的问题!
cds27 2005-09-21
  • 打赏
  • 举报
回复
我晕,跟你说了正确解释,你还说不是这么理解,那你理解了还问我们干嘛。

不清楚你怎么看我给的例子,你运行过我给的例子吗?如果没试过那你怎么理解?纸上谈兵不是正确的学习态度!再说了,你怎么知道我的例子和MSDN例子有什么不同?

XSL是事件型的语言,只要符合条件,就会自动触发满足条件的模板(也就是template)。

<xsl:apply-templates/>的意思是自动应用符合条件的模板。
<name>Albert</name>中的Albert是一个text节点。
在一般情况下,text节点会使用默认模板,不需要我们自己写。
如果要特别指定的话,那么如下:
<xsl:template match="text()">
...<!-- 你可以自己指定代码试试 -->
</xsl:template>

你把上面这段加上,看看还是不是
<?xml version="1.0" encoding="UTF-16"?>Albert, Terrance, Will, Sylvia, Timothy, Gordon, James, Robert, Dan, Sasha

真正的结果将是:
<?xml version="1.0" encoding="UTF-16"?>..., ..., ..., ..., ..., ..., ..., ..., ..., ...

cocainy 2005-09-21
  • 打赏
  • 举报
回复
补充说一下,以上例子的地址:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/xmlsdk/html/868d4a33-d209-40bc-84f1-4f80f8de9263.asp
cocainy 2005-09-21
  • 打赏
  • 举报
回复
TO: cds27(冰封)

我在msdn上看到的例子,我感觉可不是这样理解的.
例如xml数据文档:
<?xml version='1.0'?>
<?xml-stylesheet type="text/xsl" href="ifcomma.xsl" ?>
<namelist>
<name>Albert</name>
<name>Terrance</name>
<name>Will</name>
<name>Sylvia</name>
<name>Timothy</name>
<name>Gordon</name>
<name>James</name>
<name>Robert</name>
<name>Dan</name>
<name>Sasha</name>
</namelist>

xml转换文档:
<?xml version='1.0'?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >

<xsl:template match="namelist/name">
<xsl:apply-templates/>
<xsl:if test="position()!=last()">, </xsl:if>
</xsl:template>

</xsl:stylesheet>

输出结果:
<?xml version="1.0" encoding="UTF-16"?>Albert, Terrance, Will, Sylvia, Timothy, Gordon, James, Robert, Dan, Sasha

如果按你所说那么该怎么理解呢?

cds27 2005-09-09
  • 打赏
  • 举报
回复
举个简单的例子。
<doc>
<a/>
<b/>
</doc>
<xsl:template match="/doc">
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="a">
a
</xsl:template>
<xsl:template match="b">
b
</xsl:template>
----------------------
在上面XSL中,<xsl:apply-templates/> 作用等于<xsl:apply-templates select="a"/> <xsl:apply-templates select="b"/>
如果有N多个节点,则<xsl:apply-templates select="nodeN"/>
l506345z 2005-09-09
  • 打赏
  • 举报
回复
<xsl:apply-templates />

匹配当前节点下的所有节点模板.

就是该xml下的所有节点都使用下面的xsl转换规则
Triumph 2005-09-09
  • 打赏
  • 举报
回复
没人再解释一下了吗?
Triumph 2005-08-24
  • 打赏
  • 举报
回复
自己顶
bbstemp 2005-08-21
  • 打赏
  • 举报
回复
学习
Triumph 2005-08-21
  • 打赏
  • 举报
回复
还是不明白,能不能举个例子?
lgq2369 2005-08-20
  • 打赏
  • 举报
回复
应用与当前节点的匹配的模板,如:
当xml的textarea节点后面的那个节点是test,则会引用<xsl:template match="test">
椅子 2005-08-20
  • 打赏
  • 举报
回复
楼上正解
coolstr 2005-08-20
  • 打赏
  • 举报
回复
<xsl:apply-templates />

匹配当前节点下的所有节点模板.

8,909

社区成员

发帖
与我相关
我的任务
社区描述
XML/XSL相关问题讨论专区
社区管理员
  • XML/XSL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧