У меня есть шаблон XSLT, который подсчитывает темы на всех уровнях, для использования при маркировке этих тем с нумерацией в проектах DITA, которые у меня есть.
<xsl:template match="*[contains(@class, ' bookmap/chapter ')] | *[contains(@class, ' map/topicref ')] [not(ancestor-or-self::*[contains(@class,' bookmap/frontmatter ')])]" mode="topicTitleNumber">
<xsl:number format="1 " count="*[contains(@class, ' map/topicref ')] [not(ancestor-or-self::*[contains(@class,' bookmap/frontmatter ')])] | *[contains(@class, ' bookmap/chapter ')]" level="multiple"/>
</xsl:template>
Я пытаюсь добавить дополнительныйисключение из того, что подсчитывается, хотя, когда класс topicref
имеет элемент title
с outputclass
noNum
.
<xsl:template match="*[contains(@class, ' bookmap/chapter ')] | *[contains(@class, ' map/topicref ')] [not(ancestor-or-self::*[contains(@class,' bookmap/frontmatter ')])]" mode="topicTitleNumber">
<xsl:number format="1 " count="*[contains(@class, ' map/topicref ')] [not(ancestor-or-self::*[contains(@class,' bookmap/frontmatter ')] | *[contains(title/@outputclass, 'noNum')])] | *[contains(@class, ' bookmap/chapter ')]" level="multiple"/>
</xsl:template>
Показанный выше, я добавил | *[contains(title/@outputclass, 'noNum')]
после первогоnot
оператор, считающий, что он будет функционировать как дополнительное условие, при котором вызов count
будет пропускаться при вызове шаблона (т. Е. ... не предок или сам с [критериями] или темойс заголовочным атрибутом outputclass 'noNum' ...) .Однако кажется, что критерии, которые я добавил, обрабатываются как что-то, что шаблон соответствует и соответствует.
Предполагая, что я прав по последнему пункту, я считаю, что мне нужно поместить это условие в собственное утверждение «не», но я не уверен, как это сделать с условиями, уже присутствующими вXPath.