如何在xslt中的数据之间应用空格

发布于 2024-11-09 18:30:53 字数 1346 浏览 0 评论 0原文

我已经为上面的

      <block4>
          <tag>
            <name>50K</name>
            <value>
                0501/045788775099
                Praveen   // name will come 
                MENENDEZ Y PELAYOA CORUNA SPA // address will come
            </value>
         </tag>
      </block4>

标签编写了一个 xslt,但我遇到了用空格替换剩余长度的问题 您可以在中线 praveen 中看到上面的值,让我们假设对于此 xml 消息 praveen,我们收到了另一条消息,我们可能会收到 Tom,但最大长度为 < strong>35 所以我们需要计算字符串名称值的剩余长度,我们应该用空格替换,所以我不知道如何替换那里的空格...

xsl

<?xml version="1.0"?>
  <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
     <xsl:output method="text" />   
 <xsl:template match="/">

      <xsl:for-each select ="block4/tag[name = '50K']">
 <xsl:value-of select="concat(substring(value, 1, 5), ',',substring(substring-         before(value,'&#13;'),6), ',',substring-after(value,'&#13;'))" />
  </xsl:for-each>
    </xsl:template>
  </xsl:stylesheet>

预期输出如下:

0501/,045788775099,praveen。 .........................MENENDEZ Y PELAYOA CORUNA SPA

其中点代表空间,不要假设点

我需要那里的空间,假设 Praveen 是 7 个字符,剩余的 28 个字符应该在 xslt 中腾出空间

xml

      <block4>
          <tag>
            <name>50K</name>
            <value>
                0501/045788775099
                Praveen   // name will come 
                MENENDEZ Y PELAYOA CORUNA SPA // address will come
            </value>
         </tag>
      </block4>

i have written a xslt for this above tag but i have facing a problem with replacing remaining length with space
the above value you can see in middle line praveen is there let us assume for this xml message praveen we recieved for another message we cam may be recieve Tom but maximum length is 35 so we need to caluclate the string name value remaining length we should replace with SPACE so i dunno how replace a space over there ...

xsl

<?xml version="1.0"?>
  <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
     <xsl:output method="text" />   
 <xsl:template match="/">

      <xsl:for-each select ="block4/tag[name = '50K']">
 <xsl:value-of select="concat(substring(value, 1, 5), ',',substring(substring-         before(value,'
'),6), ',',substring-after(value,'
'))" />
  </xsl:for-each>
    </xsl:template>
  </xsl:stylesheet>

EXpected OUPUT lIKE:

0501/,045788775099,praveen............................MENENDEZ Y PELAYOA CORUNA SPA

where dots represents space dont assume dots

i need space over there assume think praveen is 7 char and remaining 28 char should make space wantedly in xslt

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

把人绕傻吧 2024-11-16 18:30:53

尝试使用

<xsl:text>        </xsl:text>

这些标签之间有空格。

有关详细信息:XSLT 控制空白

Try using

<xsl:text>        </xsl:text>

The space is between those tags.

For more info: XSLT Controlling Whitespace

憧憬巴黎街头的黎明 2024-11-16 18:30:53

让我们假设这个 xml 消息
我们收到了另一个
我们可能会收到汤姆的消息,但是
最大长度是 35 所以我们需要
计算字符串名称值
我们应该更换剩余的长度
与空间所以我不知道如何替换
那边有空间...

使用

substring(concat($vstr, $vBlanks35), 1, 35)

这计算出将$vstr('Praveen')与$vBlanks35(35个空格)连接起来的结果然后取开始的 35 个字符。

这是一个完整的示例:

<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output method="text"/>
 <xsl:strip-space elements="*"/>

 <xsl:variable name="vstr" select="'Praveen'"/>

 <xsl:variable name="vBlanks35" select=
      "'                                   '"/>

 <xsl:template match="/">
     "<xsl:value-of select=
       "substring(concat($vstr, $vBlanks35), 1, 35)"/>"
 </xsl:template>

</xsl:stylesheet>

当此转换应用于任何 XML 文档(未使用)时,就会产生所需的正确结果

 "Praveen                            "

let us assume for this xml message
praveen we recieved for another
message we cam may be recieve Tom but
maximum length is 35 so we need to
caluclate the string name value
remaining length we should replace
with SPACE so i dunno how replace a
space over there ...

Use:

substring(concat($vstr, $vBlanks35), 1, 35)

This evaluates to the result of concatenating $vstr ('Praveen') with $vBlanks35 (35 blanks) and then taking the starting 35 characters.

Here is a complete example:

<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output method="text"/>
 <xsl:strip-space elements="*"/>

 <xsl:variable name="vstr" select="'Praveen'"/>

 <xsl:variable name="vBlanks35" select=
      "'                                   '"/>

 <xsl:template match="/">
     "<xsl:value-of select=
       "substring(concat($vstr, $vBlanks35), 1, 35)"/>"
 </xsl:template>

</xsl:stylesheet>

when this transformation is applied on any XML document (not used), the wanted, correct result is produced:

 "Praveen                            "
丿*梦醉红颜 2024-11-16 18:30:53

在 xml 中添加空格的一种(通用)方法是使用保留空格的特殊 xml 属性:

<value xml:space="preserve"> 
        your 
        values 
        here ... 
</value>

另一种方法是使用 XSL 的保留/剥离空间 ...

One (universal) way to add space in xml is to use the special xml attribute that preserves spaces:

<value xml:space="preserve"> 
        your 
        values 
        here ... 
</value>

Another method is to use XSL's preserve/strip space ...

笑忘罢 2024-11-16 18:30:53

您应该使用 SQL 函数 RPAD 的 XSLT 版本:

<xsl:template name="rpad">
  <xsl:param name="text" />
  <xsl:param name="length" />
  <xsl:param name="char" select="' '" />
  <xsl:if test="$length > 0 and string-length($text) > 0">
    <xsl:value-of select="$text" />
    <xsl:call-template name="rpad">
      <xsl:with-param name="text" select="$char" />
      <xsl:with-param name="char" select="$char" />
      <xsl:with-param name="length" select="$length - string-length($text)" />
    </xsl:call-template>
  </xsl:if>
</xsl:template>

用法:

<xsl:call-template name="rpad">
  <xsl:with-param name="text" select="'your string here'" />
  <xsl:with-param name="length" select="35" />
</xsl:call-template>

您可以选择指定一个 char 参数,用空格以外的字符填充字符串。

You should use a XSLT version of SQL function RPAD:

<xsl:template name="rpad">
  <xsl:param name="text" />
  <xsl:param name="length" />
  <xsl:param name="char" select="' '" />
  <xsl:if test="$length > 0 and string-length($text) > 0">
    <xsl:value-of select="$text" />
    <xsl:call-template name="rpad">
      <xsl:with-param name="text" select="$char" />
      <xsl:with-param name="char" select="$char" />
      <xsl:with-param name="length" select="$length - string-length($text)" />
    </xsl:call-template>
  </xsl:if>
</xsl:template>

Usage:

<xsl:call-template name="rpad">
  <xsl:with-param name="text" select="'your string here'" />
  <xsl:with-param name="length" select="35" />
</xsl:call-template>

Optionnally you may specify a char parameter for padding your string with a character other than space.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文