Я хотел попробовать некоторые вещи.Теперь я попытался разбить строку на 100 блоков.Так вот, как далеко я получил:
<xsl:template name="split100check">
<xsl:param name="input"></xsl:param>
<xsl:variable name="newInput" select="concat(normalize-space($input), ' ' )"></xsl:variable>
<xsl:variable name="start" select="substring($input, 1, 100)"></xsl:variable>
<xsl:variable name="end" select="substring($input, 101)"></xsl:variable>
<PART>
<xsl:value-of select="$start"></xsl:value-of>
</PART>
<xsl:if test="$end">
<xsl:call-template name="split100check">
<xsl:with-param name="input" select="$end"></xsl:with-param>
</xsl:call-template>
</xsl:if>9
</xsl:template>
Так что это почти то, что я хотел бы достичь.Он принимает строку на 100 блоков, но разделяет и слова.Например:
<main>
<long>
A very long text here [....] only for test
</long>
</main>
Допустим, первые 100 блоков заканчиваются словом «только», но в его середине.таким образом, первый блок будет «Очень длинный текст [....] вкл», а второй блок «ly for test».Итак, как мне создать этот шаблон, чтобы делать то, что я хочу?
info: я могу использовать только XSLT 1.0
Редактировать: чтобы сделать более понятным пример с разбивкой на 10 блоков:
Текст: «Привет, мой друг» -> разделить его на 10 блоков было бы с моим подходом:
первый блок: <PART>Hello my f</PART>
второй блок: <PART>riend</PART>
Я хочу, чтобы слова не разделялись следующим образом:
первый блок: <PART>Hello my </PART>
второй блок: <PARTR>friend </PART>
Первый блоктеперь уже не ровно 10 символов, но это не имеет значения.Он должен содержать столько слов, сколько уместится в блоке из 10 символов.
gz ALeks