问题:在上一个问题Table of contents XSL中@potame提供的解决方案的延续中,我想知道是否有些未将CSS样式应用于某些列表项。提供的CSS如下:
<style>
body {
text-align: justify;
}
ol, ul {
counter-reset: item;
}
li {
display: list-item;
list-style-type: none;
}
li.chapter::before {
content: "";
}
li:before {
content: counters(item, ".") ". ";
counter-increment: item
}
</style>
根据前一个问题中@potame提供的目录的推理,我已经制作了XSL模板来处理章节,章节,子章节和子章节:
<xsl:template match="t:chapter">
<li class="chapter">
<h2>
<a name="{@id}"><xsl:value-of select="t:title"/></a>
</h2>
<br/>
<ol>
<xsl:apply-templates select="*[not(self::t:title)]"/>
</ol>
</li>
</xsl:template>
<xsl:template match="t:section">
<li>
<a name="{@id}"><xsl:value-of select="t:title"/></a>
<br/>
<ol>
<xsl:apply-templates select="*[not(self::t:title)]"/>
</ol>
</li>
</xsl:template>
<xsl:template match="t:subsection">
<li>
<a name="{@id}"><xsl:value-of select="t:title"/></a>
<br/>
<ol>
<xsl:apply-templates select="*[not(self::t:title)]"/>
</ol>
</li>
</xsl:template>
<xsl:template match="t:subsubsection">
<li>
<a name="{@id}"><xsl:value-of select="t:title"/></a>
<xsl:apply-templates select="*[not(self::t:title)]"/>
</li>
</xsl:template>
以下是处理列表和段落的模板,可以在内容中显示:
<xsl:template match="list:ol">
<ol>
<xsl:apply-templates/>
</ol>
</xsl:template>
<xsl:template match="list:ul">
<ul>
<xsl:apply-templates/>
</ul>
</xsl:template>
<xsl:template match="list:li/p:p">
<li>
<xsl:apply-templates/>
</li>
</xsl:template>
<xsl:template match="p:p">
<p>
<xsl:apply-templates/>
</p>
</xsl:template>
问题是,当我在内容中有列表项时,HTML结果如下所示:
Chapter 1
1.1. Motivation
...some text...
Example list:
1.1.0.1. text
1.1.0.2. tex
1.1.0.3. text
1.1.0.4. text
HTML中的预期结果是:
Chapter 1
1.1. Motivation
...some text...
Example list:
1. text
2. text
3. text
4. text
这基本上意味着我想要“普通的有序列表”,而不是像子集或其他东西那样出现......
有什么建议吗?
答案 0 :(得分:1)
我认为最简单的方法是将类设置为与您的toc相关的所有<li>
,并将特定的CSS样式应用于它们(类似于我在本章中所做的那样)。它将帮助您优化要应用的样式。
假设您在与部分,子部分等相关的所有class="tocentrynumbered"
上设置了XSLT <li>
属性,您可以使用以下修改过的CSS:
body {
text-align: justify;
}
ol, ul {
counter-reset: item;
}
li.chapter::before {
content: "";
}
li.tocentrynumbered {
display: list-item;
list-style-type: none;
}
li.tocentrynumbered:before {
content: counters(item, ".") ". ";
counter-increment: item;
}
因此,它不会影响您在文档中使用的其他列表项。