将 CSS 应用于某些列表项
Apply CSS to certain list items
问题: 在@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在上一个问题中也提供的table内容的推理,我制作了用于处理章,节,小节和小节的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
这基本上意味着我想要 "normal ordered lists" 而不是看起来像一个子子节或其他东西...
有什么建议吗?
我认为最简单的方法是将 类 设置为与您的目录相关的所有 <li>
,然后对它们应用特定的 CSS 样式(类似于我在章节)。它将帮助您改进要应用的样式。
假设您在与部分、小节等相关的所有 <li>
上设置 XSLT class="tocentrynumbered"
属性,您可以使用以下修改后的 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;
}
因此不会影响您在文档中使用的其他列表项。
问题: 在@potame 在我之前的问题
<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在上一个问题中也提供的table内容的推理,我制作了用于处理章,节,小节和小节的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
这基本上意味着我想要 "normal ordered lists" 而不是看起来像一个子子节或其他东西...
有什么建议吗?
我认为最简单的方法是将 类 设置为与您的目录相关的所有 <li>
,然后对它们应用特定的 CSS 样式(类似于我在章节)。它将帮助您改进要应用的样式。
假设您在与部分、小节等相关的所有 <li>
上设置 XSLT class="tocentrynumbered"
属性,您可以使用以下修改后的 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;
}
因此不会影响您在文档中使用的其他列表项。