Xslt 如何检查xsl中的字符串长度,如果没有达到目标长度,则表示需要替换为空格
大家好Xslt 如何检查xsl中的字符串长度,如果没有达到目标长度,则表示需要替换为空格,xslt,xslt-2.0,Xslt,Xslt 2.0,大家好 <Table> <COSTUMER_NAME>praveen</COSTUMER_NAME> </Table> 普拉文 praveen(字符串长度)=7 我们不知道客户名称的字符串长度有时可能小于35 或者确切地说是35 如果字符串长度小于35,则需要替换为剩余字符串长度部分以外的空间 输出:如果我以praveen的形式接收字符串 字符串长度为“7” 那么剩下的28个字符应该被替换为空格我认为这应该可以做到: <xsl:
<Table>
<COSTUMER_NAME>praveen</COSTUMER_NAME>
</Table>
普拉文
praveen(字符串长度)=7
我们不知道客户名称的字符串长度有时可能小于35
或者确切地说是35
如果字符串长度小于35,则需要替换为剩余字符串长度部分以外的空间
输出:如果我以praveen的形式接收字符串
字符串长度为“7”
那么剩下的28个字符应该被替换为空格我认为这应该可以做到:
<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个字符中提取一个子字符串,因此额外的空白将丢失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>
<Table>
<COSTUMER_NAME>praveen</COSTUMER_NAME>
</Table>
'praveen '
注意事项:
<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>
<Table>
<COSTUMER_NAME>praveen</COSTUMER_NAME>
</Table>
'praveen '
被使用,这确保了完全的可重用性请注意,如果名称超过38个字符,则客户名称的结尾也会丢失。问得好,+1。请参阅我的asnswer,了解一个简短、简单、最通用和可重用的XSLT2.0解决方案。