У меня есть XML-файл:
<ul class="ul">
<li class="li">UL LI 1</li>
<li class="li">UL LI 2</li>
<li class="li">UL LI 3
<ol class="ol">
<li class="li">OL LI 1</li>
<li class="li">OL LI 2
<ul>
<li class="li">UL LI 1</li>
<li class="li">UL LI 2
<ol class="ol">
<li class="li">OL LI 1</li>
<li class="li">OL LI 2
<ol class="ol">
<li class="li">OL LI 1</li>
<li class="li">OL LI 2</li>
<li class="li">OL LI 3</li>
</ol>
</li>
</ol>
</li>
</ul>
</li>
</ol>
</li>
То, чего я хочу достичь, это что-то вроде этого:
- UL LI 1
- UL LI 2
UL LI 3
- OL LI 1
OL LI 2
- UL LI 1
UL LI 2
- OL LI 1
OL LI 2
2,1 OL LI 1
2,2 OL LI 2
2,3 OL LI 3
Если родителем ol является ul, я хочу сбросить нумерацию, в противном случае нумерация должна быть унаследована от ее родителя. Как я могу сделать это в xslt?
Я попытался решить эту проблему с помощью этого кода:
<xsl:variable name="ol.parent" select="parent::*/parent::*/parent::*[contains(@class, ' ol ')]"/>
<xsl:choose>
<xsl:when test="not(empty($ol.parent))">
<xsl:number level="multiple" select="$ol.parent/ancestor-or-self::*[contains(@class, ' ol ')]" count="*[contains(@class, ' li ')]" format="1."/>
</xsl:when>
<xsl:otherwise>
<xsl:number level="multiple" from="*[(contains(@class, ' ol ') or contains(@class, ' li '))]" format="1."/>
</xsl:otherwise>
</xsl:choose>
Но упорядоченный список не наследует многоуровневый номер. Всегда начинается с единицы.