slugger415
slugger415

Reputation: 371

XSLT: templates without mode ignored in result-documents

I'm learning to use the mode attribute and must being doing something wrong. Apologies if this has been answered before but I'm not finding it here.

I want to process "title" elements separately depending on their context. For the main document, I want to add an "a" element inside of it:

    <xsl:template match="title">
     <div>
      <xsl:value-of select="."/>
      <a href="some_URL">some text
      </a>
     </div>
    </xsl:template>

But elsewhere I'm creating result-documents where I just want the title:

    <xsl:tamplate match="title" mode="print">
     <div class="title">
      <xsl:value-of select="."/>
     </div>
    </xsl:template>

In my main template match="/" I'm doing a for-each for each section, creating a result-document for each one:

    <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>

Then I call everything else for the main document:

    <html><head>stuff</head>
    <body>
     <div>
      <xsl:apply-templates/>
     </div>
    </body>
    </html>

The problem is this works for the result-document title but none of the rest of the result-document templates are used, since they don't have mode="print" on them. So the rest of the result-document all comes out as text.

Any idea what I need to do here? I'm obviously missing something basic.

thank you Scott

Upvotes: 0

Views: 119

Answers (1)

Martin Honnen
Martin Honnen

Reputation: 167696

You have not shown any of the other templates but if you expect the <xsl:apply-templates mode="print"/> to apply them then you need to have a mode="#all" on them. And if they do additional apply-templates then you need to use <xsl:apply-templates select="#current"/>. See http://www.w3.org/TR/xslt20/#modes for details.

Upvotes: 1

Related Questions