我在类中包含缩进名称的文档,例如:<div class="if">
和<div class="i1 note">
,依此类推。 (缩进类是:if,i1,i2,i3,i4,i5,i6)。
非缩进CSS选择器差异很大。但缩进CSS选择器名称是一致的。
目标:我希望将非缩进类存储在变量中以备将来使用。
这是我进入的方向,没有成功:
<xsl:variable name="indent-names"
select="'if i1 i2 i3 i4 i5 i6'"/>
<xsl:variable name="non-indent-classes"
select="replace(@class,$indent-names,'')"/>
连连呢?我认为<xsl:analyze-string select="@class" regex=" .... ">
是要走的路。还没有成功。
更新
根据马丁的回答,我这样做了:
<xsl:variable name="indent-names"
select="'if i1 i2 i3 i4 i5 i6'"/>
<xsl:variable name="non-indent-classes"
select="tokenize(@class, ' ')[not(. = tokenize($indent-names, ' '))]"/>
效果很好。我必须更熟悉tokenize()
。
答案 0 :(得分:1)
我会使用tokenize(@class, ' ')[not(. = tokenize($indent-names, ' '))]
。显然,执行内部标记一次并将其存储在变量<xsl:variable name="names" select="tokenize($indent-names, ' ')"/>
中更有效,然后使用该变量tokenize(@class, ' ')[not(. = $names)]
。