Ограничить длину записи CSV до 100 символов в xslt - PullRequest
0 голосов
/ 04 декабря 2018

У меня есть xslt для преобразования xml в CSV.Но я не хочу, чтобы записи в выводе были более 100 символов.Ниже мой xslt, может ли кто-нибудь помочь мне ограничить каждую запись из 100 символов?

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:wd="urn:com.workday.report/Positive_Pay_SVB"
    xmlns:this="urn:this-stylesheet" exclude-result-prefixes="xs" version="2.0">

    <xsl:output method="text"/>
    <xsl:variable name="delimiter" select="'&#x20;'"/>
    <xsl:variable name="linefeed" select="'&#xD;&#xA;'"/>


    <xsl:template match="wd:Report_Data">

        <xsl:apply-templates select="wd:Report_Entry/wd:Payments_group"/>


    <xsl:template match="wd:Report_Entry/wd:Payments_group">

        <xsl:variable name="Paymentamount" select="translate(normalize-space(translate(wd:Payment_Total_Amount,'.','')),'','')"/>

        <xsl:value-of select="wd:CF_Account_number_HSBC_Canada"/>
        <xsl:value-of select="$delimiter"/>

        <xsl:value-of select="concat(substring('0000000000', 1 + string-length(wd:Check_Number)), wd:Check_Number)"/>



        <xsl:value-of select="concat(substring('0000000000', 1 + string-length($Paymentamount)), $Paymentamount)"/>



        <xsl:value-of select="wd:Payment_Date"/>

        <xsl:value-of select="$delimiter"/>
        <xsl:value-of select="wd:Payment_Payee/@wd:Descriptor"/>


        <xsl:value-of select='$linefeed'/>

     </xsl:template>    
</xsl:stylesheet>

1 Ответ

0 голосов
/ 04 декабря 2018

Вы всегда можете ограничить длину вывода значения с помощью

substring(value,1,100)

Если у вас есть несколько xsl:value-of, которые вы хотите ограничить, объедините их, а затем примените приведенное выше выражение:

substring(concat(value1,value2,...),1,100)

Применительно к вашему шаблону это может выглядеть так:

<xsl:template match="wd:Report_Entry/wd:Payments_group">    
    <xsl:variable name="Paymentamount" select="translate(normalize-space(translate(wd:Payment_Total_Amount,'.','')),'','')"/>

    <xsl:value-of select="substring(wd:CF_Account_number_HSBC_Canada,1,100)"/>
    <xsl:value-of select="$delimiter"/>

    <xsl:value-of select="substring(concat(substring('0000000000', 1 + string-length(wd:Check_Number)), wd:Check_Number, concat(substring('0000000000', 1 + string-length($Paymentamount)), $Paymentamount), wd:Payment_Date),1,100)"/>
    <xsl:value-of select="$delimiter"/>

    <xsl:value-of select="substring(wd:Payment_Payee/@wd:Descriptor,1,100)"/>
    <xsl:value-of select='$linefeed'/>

</xsl:template>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...