0
我正在学习使用mode属性,并且必须做错某些事情。道歉,如果这已经回答过,但我没有在这里找到它。XSLT:结果文档中忽略模式的模板
我想根据上下文分别处理“标题”元素。对于主文件,我想添加一个“a”元素在它的内部:
<xsl:template match="title">
<div>
<xsl:value-of select="."/>
<a href="some_URL">some text
</a>
</div>
</xsl:template>
但在其他地方我创建结果的文档,我只想标题:
<xsl:tamplate match="title" mode="print">
<div class="title">
<xsl:value-of select="."/>
</div>
</xsl:template>
在我主模板匹配= “/” 我在做的for-each每个部分,创造了每一个结果文档:
<xsl:for-each select="/topic/body/bodydiv/section">
<xsl:result-document href="{$printoutfile}">
<html><head>some stuff</head><body>
<div class="section">
<xsl:apply-templates mode="print"/>
</div>
... more stuff...
</body</html>
</xsl:result-document>
</xsl:for-each>
然后我呼吁一切对主文档:
<html><head>stuff</head>
<body>
<div>
<xsl:apply-templates/>
</div>
</body>
</html>
问题是这是结果文档标题的作品,但没有使用其他结果文档模板,因为它们没有mode =“print”。因此,结果文档的其余部分都以文本形式出现。
任何想法我需要在这里做什么?我显然缺少一些基本的东西。
谢谢 斯科特
你还没有显示任何其他模板,但如果你期望'xsl:apply-templates mode =“print”/>'应用它们,那么你需要在它们上面有一个'mode =“#all”' 。如果他们使用'apply-templates',那么你需要使用''。有关详细信息,请参阅http://www.w3.org/TR/xslt20/#modes。 –
2014-10-07 17:23:55
很好用,谢谢!但我收到一条错误消息: IDW0713E:XTRE0540:/ topic/body [1]/bodydiv [2]/section [1]/title [1]的模糊规则匹配 感谢您的帮助。 – 2014-10-08 15:11:21
让我们在一个问题中解决一个问题。我已将我的评论意见转化为答案,以便我们能够解决这个问题。对于另一个问题,问一个新的问题,除非你的XSLT处理器告诉你哪个两个或多个模板匹配那个'title'元素,你可以简单地通过决定哪一个具有更高的优先级, 'priority =“5”'就可以了。 – 2014-10-08 16:32:12