2009-07-31 57 views
2

我需要在源文檔的字符串中只有一個星號的情況下通過測試。查找XSLT中匹配模式的字符數1

因此,像

<xslt:if test="count(find('\*', @myAttribute)) = 1)> 
    There is one asterisk in myAttribute 
</xslt:if> 

我需要XSLT 1的功能,但對於XSLT 2答案可以理解爲好,但在XSLT不會得到接受,除非它不可能1.

+0

也許像stringlength(更換( '[^ \ *]', '',@myAttribute))== 1將工作? – Hugo 2009-07-31 08:05:14

+0

結束使用此規則: 單個星號... 如果您有更好的答案,請發佈他們! – Hugo 2009-07-31 08:40:18

回答

4

string-length(@myAttribute) - string-length(translate(@myAttribute, '*', '')) = 1 

在XPath 2.0,我可能做到這一點:

在XPath 1.0中,我們可以通過使用translate刪除所有星號,並比較長做

count(string-to-codepoints(@myAttribute)[. = string-to-codepoints('*')]) = 1 
1

另一種解決方案應該XPath 1.0中工作:

contains(@myAttribute, '*') and not(contains(substring-after(@myAttribute, '*'), '*'))