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]'。 –