xslt 1.0-如何使用xsl

  • 本文关键字:何使用 xsl xslt xslt-1.0
  • 更新时间 :
  • 英文 :


我希望使用XSL版本1.0用额外的空间(任何字符(填充数据。

Name field max chars length is 10 (length must be dyanamic) chars.
Need to transfer data using XSL.
In XML:
<emp>
<name>Test</name>
</emp>
Expected Output : 
<emp>
<name>Test******</name>
</emp>
Please let me know if anyone have any solution.
Thanks in advance. 

尝试:

substring(concat($yourstring, '**********'), 1, 10)

使用输入的示例:

XSLT 1.0

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:strip-space elements="*"/>
<!-- identity transform -->
<xsl:template match="@*|node()">
    <xsl:copy>
        <xsl:apply-templates select="@*|node()"/>
    </xsl:copy>
</xsl:template>
<xsl:template match="name">
    <xsl:copy>
        <xsl:value-of select="substring(concat(., '**********'), 1, 10)"/>
    </xsl:copy>
</xsl:template>
</xsl:stylesheet>

结果

<?xml version="1.0" encoding="UTF-8"?>
<emp>
   <name>Test******</name>
</emp>

或者,如果您的处理器支持它,您可以使用EXSLT str:align((函数——可能与str:patching((函数一起动态创建填充字符串。

**Input.xml**
<?xml version="1.0"?>
<Data>
<text>1234567</text>
</Data>
**StringPadding.xsl**
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="text" />
<xsl:template match="/Data"><xsl:variable name="new-str" select="//Data/text"></xsl:variable>
After Padding= <xsl:call-template name="str-pad"><xsl:with-param name="string" select="$new-str"/><xsl:with-param name="str-length" select="10" /></xsl:call-template>
</xsl:template>
<xsl:template name="str-pad">
<xsl:param name="string" />
<xsl:param name="pad-char" select="'*'"/>
<xsl:param name="str-length" />
<xsl:value-of select="'  '"/>
<xsl:choose>
<xsl:when test="string-length($string) = $str-length">
<xsl:value-of select="$string" />
</xsl:when>
<xsl:otherwise>
<xsl:call-template name="str-pad">
<xsl:with-param name="string" select="concat($string,$pad-char)" />
<xsl:with-param name="pad-char" select="$pad-char" />
<xsl:with-param name="str-length" select="$str-length" />
</xsl:call-template>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>

输出:填充后=1234567***

<xsl:function name="functx:pad-string-to-length" as="xs:string"
              xmlns:functx="http://www.functx.com">
  <xsl:param name="stringToPad" as="xs:string?"/>
  <xsl:param name="padChar" as="xs:string"/>
  <xsl:param name="length" as="xs:integer"/>
  <xsl:sequence select="
   substring(
     string-join (
       ($stringToPad, for $i in (1 to $length) return $padChar)
       ,'')
    ,1,$length)
 "/>
</xsl:function>

例如:functx:将字符串填充到长度('Ans','*',5(输出:Ans**

相关内容

  • 没有找到相关文章

最新更新