<!--
Nick's web site: XSLT helper functions.
- Copyright © 2019-2020 Nick Bowler
+ Copyright © 2019-2022 Nick Bowler
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
along with this program. If not, see <https://www.gnu.org/licenses/>
-->
<xsl:stylesheet version='1.0'
+ xmlns='http://www.w3.org/1999/xhtml'
xmlns:xhtml='http://www.w3.org/1999/xhtml'
xmlns:xsl='http://www.w3.org/1999/XSL/Transform'
xmlns:func='http://exslt.org/functions'
xmlns:f='http://draconx.ca/my-functions'
extension-element-prefixes='func f'>
+<xsl:output method='xml' encoding='UTF-8' indent='yes'
+ doctype-public='-//W3C//DTD XHTML 1.1//EN'
+ doctype-system='http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd' />
+
<!-- Returns true iff the given element is an XHTML span-level element -->
<func:function name='f:element-is-span'>
<xsl:param name='node' select='.' />
or f:element-is-span($node)' />
</func:function>
+<!-- f:ends-with(a, b) returns true iff a ends with b -->
+<func:function name='f:ends-with'>
+ <xsl:param name='str' />
+ <xsl:param name='suffix' />
+ <func:result select='$suffix=substring($str,
+ string-length($str)-string-length($suffix)+1)' />
+</func:function>
+
<!-- Remove leading whitespace from a string -->
<func:function name='f:strip-leading'>
<xsl:param name='str' select='.' />
</func:result>
</func:function>
+<!--
+ f:contains-token(list, token)
+ Returns true iff the space-separated list contains the given token
+-->
+<func:function name='f:contains-token'>
+ <xsl:param name='haystack' />
+ <xsl:param name='needle' />
+
+ <func:result select='contains(
+ concat(" ", normalize-space($haystack), " "),
+ concat(" ", normalize-space($needle), " ")
+ )' />
+</func:function>
+
</xsl:stylesheet>