将 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;
}

因此不会影响您在文档中使用的其他列表项。