首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >可以给我一个关于模板在xsl中的"mode“的例子吗?

可以给我一个关于模板在xsl中的"mode“的例子吗?
EN

Stack Overflow用户
提问于 2010-12-20 12:26:36
回答 2查看 62.6K关注 0票数 75

在……里面

代码语言:javascript
复制
<xsl:template name="temp_name" mode="mode">

mode是什么意思?我搜索了很多资源,但都找不到相关的例子。那么有没有人能举个例子来解释呢?

EN

回答 2

Stack Overflow用户

发布于 2016-05-18 13:25:40

代码语言:javascript
复制
<xsl:apply-templates select="phone" />
<xsl:apply-templates select="phone" mode="accountNumber"/>
<xsl:template match="phone">
      <TD>A</TD>
</xsl:template>
<xsl:template match="phone" mode="accountNumber">
      <TD>B</TD>
</xsl:template>

在这里链接一个简单的例子:https://msdn.microsoft.com/en-us/library/ms256045%28v=vs.110%29.aspx

票数 8
EN

Stack Overflow用户

发布于 2020-08-18 14:20:26

mode属性允许以多种方式处理相同的XML元素。

如果要使用mode属性,则模板必须具有match属性,因此它们不适用于仅依赖name属性进行调用的模板。

它们应用于xsl:apply-templates以确定哪些xsl:template将响应,因此使用模式的应用将仅调用使用相同模式的模板。不带模式的模板将只响应不带模式的应用。

例如,您可能希望将XML paragraph元素呈现为用于查看的HTML p元素,但呈现为用于编辑的form

然后,可以通过以下方式呈现该文件以供查看:

代码语言:javascript
复制
<xsl:template match="paragraph">
 <p>...</p>
</xsl:template>

调用时,它将匹配XML文档中的paragraph标记:

代码语言:javascript
复制
<xsl:apply-templates />

相反,要渲染以供编辑使用,请执行以下操作:

代码语言:javascript
复制
<xsl:template match="paragraph" mode="edit">
 <form>...</form>
</xsl:template>

通过以下方式调用:

代码语言:javascript
复制
<xsl:apply-templates mode="edit" />

请注意,在本例中,如果要使用非模式xsl:apply-templates呈现页面的其余部分,则必须显式调用xsl:template mode="edit"版本才能编辑特定的paragraph元素。

如果不需要为所有XML元素提供模式匹配,请提供一个空模板,如下所示:

代码语言:javascript
复制
<xsl:template match="*" mode="edit" />

以确保您不会从深度匹配中获得污染输出的“幻影”文本。

与任何xsl catchall模板一样,将它放在相同模式的所有xsl:template的开头,因为xsl只使用最后一个匹配的模板,并且将它放在最后将确保看不到任何东西!

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4486869

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档