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