0
在单个文档中有一组商标节点<tm>
。每个节点<tm>
包含文本节点 - 商标名称。 tm's
之间可能有相同的节点,这意味着它们具有相同的商标名称。我需要编写一个模板,用于将商标字符™(™
)仅添加到每个商标的首次出现处。使用xpath在相同节点中查找具有特定文本的节点的位置
实施例:
<doc>
<a><tm>A</tm></a>
<tm>A</tm>
<tm>B</tm>
<b><tm>B</tm></b>
<a><b><c><tm>A</tm></c></b></a>
</doc>
只有<tm>A</tm>
和<tm>B</tm>
第一事件应被处理。
预期的结果是:
<doc>
<a><tm>A™</tm></a>
<tm>A</tm>
<tm>B™</tm>
<b><tm>B</tm></b>
<a><b><c><tm>A</tm></c></b></a>
</doc>
的困难,这里是有相同的节点。此外,我无法为每个商标分别编写一个模板,一个模板应该匹配所有商标。
这里是解决方案的草案:
<xsl:template match="tm">
<xsl:variable name="text" select="text()"/>
<xsl:variable name="same_tms" select="//tm[text()=$text]"/>
<xsl:if test=" --- current tm is the first among $same_tms --- ">
<xsl:value-of select="concat(text(), '™')"/>
</xsl:if>
</xsl:template>
我不知道怎么写,将检查当前<tm>
是中$same_tms
第一个通用的测试条件。可能吗?
完美,谢谢! – lagivan
很显然'is'运算符也会解决你的方法。是$ same_tms [1]'。 –