XSLT:结果文档中忽略没有模式的模板

XSLT:结果文档中忽略没有模式的模板,xslt,mode,Xslt,Mode,我正在学习使用mode属性,肯定是做错了什么。如果以前有人回答过,我表示歉意,但我在这里找不到 我想根据上下文分别处理“title”元素。对于主文档,我想在其中添加一个“a”元素: <xsl:template match="title"> <div> <xsl:value-of select="."/> <a href="some_URL">some text </a> &

我正在学习使用mode属性,肯定是做错了什么。如果以前有人回答过,我表示歉意,但我在这里找不到

我想根据上下文分别处理“title”元素。对于主文档,我想在其中添加一个“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>

在我的主模板match=“/”中,我正在为每个部分执行一个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>

一些东西
... 更多的东西。。。

您尚未显示任何其他模板,但如果希望
应用它们,则需要在它们上设置
模式=“#all”
。如果他们不应用其他模板,那么您需要使用
。有关详细信息,请参阅。

您尚未显示任何其他模板,但如果您希望应用
xsl:apply templates mode=“print”/>
,则需要在其上设置
mode=“#all”
。如果他们使用传统的
应用模板
,那么您需要使用
。有关详细信息,请参阅。这非常有效,谢谢!但是,我收到一条错误消息:IDW0713E:XTRE0540:/topic/body[1]/bodydiv[2]/section[1]/title[1]的模糊规则匹配谢谢您的帮助。让我们用一个问题解决一个问题。我已经把我的意见变成了一个答案,这样我们就可以结束这个问题的解决。对于另一个问题,请提出一个新问题,除非XSLT处理程序告诉您哪两个或多个模板与
title
元素匹配,并且您可以通过确定哪一个模板具有更高的优先级并在其上添加例如
priority=“5”
来解决它。这样就可以了,谢谢您解决了我的问题。-斯科特
    <html><head>stuff</head>
    <body>
     <div>
      <xsl:apply-templates/>
     </div>
    </body>
    </html>