在……里面
<xsl:template name="temp_name" mode="mode">
mode
是什么意思?我搜索了很多资源,但都找不到相关的例子。那么有没有人能举个例子来解释呢?
发布于 2016-05-18 13:25:40
<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
发布于 2020-08-18 14:20:26
mode
属性允许以多种方式处理相同的XML元素。
如果要使用mode
属性,则模板必须具有match
属性,因此它们不适用于仅依赖name
属性进行调用的模板。
它们应用于xsl:apply-templates
以确定哪些xsl:template
将响应,因此使用模式的应用将仅调用使用相同模式的模板。不带模式的模板将只响应不带模式的应用。
例如,您可能希望将XML paragraph
元素呈现为用于查看的HTML p
元素,但呈现为用于编辑的form
。
然后,可以通过以下方式呈现该文件以供查看:
<xsl:template match="paragraph">
<p>...</p>
</xsl:template>
调用时,它将匹配XML文档中的paragraph
标记:
<xsl:apply-templates />
相反,要渲染以供编辑使用,请执行以下操作:
<xsl:template match="paragraph" mode="edit">
<form>...</form>
</xsl:template>
通过以下方式调用:
<xsl:apply-templates mode="edit" />
请注意,在本例中,如果要使用非模式xsl:apply-templates
呈现页面的其余部分,则必须显式调用xsl:template mode="edit"
版本才能编辑特定的paragraph
元素。
如果不需要为所有XML元素提供模式匹配,请提供一个空模板,如下所示:
<xsl:template match="*" mode="edit" />
以确保您不会从深度匹配中获得污染输出的“幻影”文本。
与任何xsl catchall模板一样,将它放在相同模式的所有xsl:template
的开头,因为xsl只使用最后一个匹配的模板,并且将它放在最后将确保看不到任何东西!
https://stackoverflow.com/questions/4486869
复制相似问题