我目前正在爲一些查找艾滋病的XSL樣式表工作,但我相信我在樣式表中的多個模板之間有衝突。誠然,我對XSL相當陌生,所以我可能在這裏錯過了一些東西。我希望我已經包含了所有必要的細節。XSL-多模板衝突?
這裏是我想要的模板要遵循代碼:
<c05 level="item"><did><unittitle><title render="italic">Souvenir</title>, undated</unittitle></did>
<scopecontent>
<p>With sketches of Confederate Generals and Confederate flags and a <emph render="doublequote">bird's eye view</emph> of Charleston.</p>
</scopecontent>
</c05>
現在,問題的格式2個模板我的容器分別列出的佈局和一些文本格式。佈局模板如下:
<xsl:template name="item">
<xsl:variable name="title">
<xsl:if test="did/unitid">
<xsl:value-of select="did/unitid"/><xsl:text>. </xsl:text>
</xsl:if>
<xsl:value-of select="did/unittitle"/>
<xsl:if test="did/unitdate">
<xsl:text>, </xsl:text><xsl:value-of select="did/unitdate"/>
</xsl:if>
</xsl:variable>
<div style="margin-left:80px; padding-top:10px;"><xsl:value-of select="$title" /></div>
<div class="c01sc" style="margin-left:80px;"><xsl:value-of select="scopecontent" /></div>
<xsl:element name="a">
<xsl:call-template name="addidtoc"/>
</xsl:element>
</xsl:template>
這裏是文本格式的代碼。它調用另一個模板執行一些格式化:
<xsl:template match='emph'>
<xsl:call-template name='render'/>
</xsl:template>
<xsl:template name='render'>
<xsl:choose>
<xsl:when test="@render='italic'">
<xsl:element name="i">
<xsl:call-template name="addid"/>
<xsl:apply-templates/>
</xsl:element>
</xsl:when>
etc.....
</xsl:template>
問題是,只有第一個佈局模板的操作正在執行。我的佈局樣式是生成的,但由於emph標籤應該在雙引號中的區域仍然很簡單。這是模板層次結構的問題,還是我做了一些完全錯誤的事情?希望這是有道理的。我會很感激我能得到的任何幫助!
你可以發佈你獲得的輸出和你想要的輸出嗎? – 2011-05-27 18:49:12
也許有用也有第二個模板的完整代碼。 – 2011-05-27 18:51:48