我目前正在为一些查找艾滋病的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