как проверить длину строки в xsl и если не до целевой длины означает, что необходимо заменить как пробел - PullRequest
0 голосов
/ 04 мая 2011

hii каждый элементменьше 35 или было бы точно 35

если длина строки была меньше 35, то нам нужно заменить как пробел, отличный от оставшейся части длины строки

Вывод: если я получил строку как правее

длина строки была " 7 "

, поэтому оставшиеся 28 символов должны бытьзаменено на пробел

Ответы [ 2 ]

1 голос
/ 04 мая 2011

Я думаю, что это должно сделать это:

<xsl:template match="/">
    <xsl:variable name="CUSTOMER_NAME">thestring</xsl:variable>
    <xsl:value-of 
         select="substring(
                    concat(
                       $CUSTOMER_NAME,
                       '                                   '
                    ),
                    1,
                    35
                 )"/>
</xsl:template>

В качестве аргумента функции concat есть 35 пробельных символов. Таким образом, он объединяет вашу строку и 35 пробелов, а затем берет из нее подстроку первых 35 символов, поэтому лишние пробелы теряются

0 голосов
/ 07 мая 2011

Решение 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                            '

Примечание :

  1. <xsl:function> используется , и этообеспечивает полное повторное использование.

  2. Полная параметризация дает нам наиболее общее, наиболее применимое и наиболее повторно используемое решение.

  3. Такая функция может быть определена почти точно так же, как в XQuery или как элемент функции в чистом XPath 3.0.

...