<Table>
<COSTUMER_NAME>praveen</COSTUMER_NAME>
</Table>
praveen(字符串长度)= 7
我们不知道 COSTUMER_NAME 的字符串长度有时可能小于35 或者它确实 35
如果字符串长度小于35,则我们需要替换为剩余字符串长度部分以外的空格
输出:如果我收到字符串 praveen
字符串长度为“ 7 ”
所以剩下的28个字符应该替换为空格
答案 0 :(得分:1)
我认为应该这样做:
<xsl:template match="/">
<xsl:variable name="CUSTOMER_NAME">thestring</xsl:variable>
<xsl:value-of
select="substring(
concat(
$CUSTOMER_NAME,
' '
),
1,
35
)"/>
</xsl:template>
其中有35个空格字符作为concat函数的参数。所以它连接你的字符串和35个空格字符,然后从前35个字符中获取一个子字符串,这样就会丢失额外的空格
答案 1 :(得分:0)
XSLT 2.0解决方案:
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:my="my:my" >
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:template match="/">
'<xsl:sequence select=
"my:pad(/*/*, 35, ' ')"/>'
</xsl:template>
<xsl:function name="my:pad" as="xs:string">
<xsl:param name="pString" as="xs:string"/>
<xsl:param name="pLength" as="xs:integer"/>
<xsl:param name="pPadChar" as="xs:string"/>
<xsl:sequence select=
"concat($pString,
string-join(
for $i in 1 to $pLength - string-length($pString)
return $pPadChar
,
''
)
)
"/>
</xsl:function>
</xsl:stylesheet>
应用于提供的XML文档:
<Table>
<COSTUMER_NAME>praveen</COSTUMER_NAME>
</Table>
生成了想要的结果:
'praveen '
请注意:
<xsl:function>
,这可确保完全重复使用。
完整参数化为我们提供了最常用,最适用且最可重复使用的解决方案。
此类函数几乎可以在XQuery中以相同的方式定义,也可以在纯XPath 3.0中定义为函数项。