I have an XML to Fixed length message transformation. At the end of each record I have to add spaces for example - X(4), X(15).
Is there any options to insert the spaces apart from xsl:text.
答案 0 :(得分:1)
例如,您当然可以定义参数或变量,例如
<xsl:param name="padding" as="xs:string" select="' '"/>
,然后在需要时不使用xsl:text
,而是使用<xsl:value-of select="$padding"/>
。或正如我在评论中指出的,如果您要“计算”填充,则可以使用表达式<xsl:param name="padding-length" as="xs:integer" select="4"/>
和<xsl:param name="padding" as="xs:string" select="string-join(for $in in 1 to $padding-length return ' ', '')"/>
,然后将变量与xsl:value-of
一起使用,当然也可以在任何concat中使用或其他地方。最后,您的示例X(4)
或X(15)
看起来像一个函数调用,因此定义一个函数
,并在需要值的地方直接调用mf:X(4)
,例如与xsl:value-of
。与XSLT 2中的任何用户定义函数一样,您需要在样式表中声明并使用一些名称空间/前缀作为函数,例如<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:mf="http://example.com/mf" version="2.0" exclude-result-prefixes="mf">
。