我无法找到如何在代码中调用扩展函数:
<xsl:if test='string-length(normalize-space(body)) > 100'>
<a href='/photo/{id}-'> >>></a><br/>
</xsl:if>
我需要在foo:translit(human_url)
之后添加对'{id}-'
函数的调用,因此结果将显示为'/photo/{id}-{transliterated_part}'
,但似乎没有语法正确的方法!
答案 0 :(得分:1)
是的,这是完全可能的。只需随便调用用花括号括起来的函数,例如:
<a href='/photo/{id}-{foo:translit(human_url)}'> >>></a>
这是一个使用用户定义函数foo:upper-lower()
的演示,它返回接收参数的大写和小写版本,用下划线分隔:
<?xml version="1.0" encoding="UTF-8" ?>
<xsl:transform exclude-result-prefixes="foo xs" xmlns:foo="bar" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
<xsl:output encoding="UTF-8" indent="yes" />
<xsl:function name="foo:upper-lower" as="xs:string">
<xsl:param name="input" as="xs:string"/>
<xsl:sequence select="concat(upper-case($input),'_',lower-case($input))"/>
</xsl:function>
<xsl:template match="a">
<a href="/photo/{.}-{foo:upper-lower(.)}"></a>
</xsl:template>
</xsl:transform>
<强> xsltransform.net demo
强>
输入:
<a>Test</a>
输出
<a href="/photo/Test-TEST_test"/>