私はいくつかのことを試したがっていました。今私は100ブロックに文字列を分割しようとしました。だから私はこれまでのところどのようになったのですか:XSLT 1.0で文字列を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ブロックは "only"という単語で終了し、途中で終了するとします。最初のブロックは「非常に長いテキスト[....]」で、2番目のブロックは「テスト用」です。だから私は私が望むことをするためにそのテンプレートを構築する必要がありますか?
情報:
テキスト:10個のブロックを分割してそれがより明確な例を作成するには :私はXSLT 1.0
編集]を使用することができます「こんにちは私の友人」 - > 10blocksに分割は次のようになり
最初のブロック:<PART>Hello my f</PART>
第二のブロック:<PART>riend</PART>
私は言葉はこのようsplitedないことにしたい。
最初のブロック:<PART>Hello my </PART>
第二のブロック:<PARTR>friend </PART>
を第一のブロックOFCは、今はもうちょうど10文字長くはありませんが、それは問題ではありません。それは10文字ブロックに収まるように多くの言葉を入れなければならない。
gzでALEKS
あなたは本当にあなたがほしいと言っていませんでした。専門用語で、あなたのための「言葉」とは何ですか?あなたは分割が単語で起こるときにどこで発生するようにしたいですか? - 単語を「スペースで区切られたもの」と定義した場合、単語の前に分割を入れてください*と*は、単語の分布が100文字以上の単語が存在しない(URLなどと思う)ことが合理的に確信していれば、 [私が別の質問のために作成した 'substring-before-last'テンプレートの](http://stackoverflow.com/questions/1119449/removing-the-last-characters-in-an-xslt-string/1119666 #1119666)。 – Tomalak
ああ、十分に明快ではないことを申し訳ありません。言葉は私のための言葉です:)。私は上記のようにタグの間に非常に長いテキストがあるとしましょう。 [...]は長いテキストを象徴するはずです(何かを記述するような長いテキストを想像してください)。 理由を説明するだけです:10文字に分割し、「Hello my friend」という文字列を「Hello my f」と「friend」に分割するとしましょう。しかし、私は持っている: "こんにちは私"と "友人"。したがって、最後の単語がこの場合は10ブロックに収まらない場合は、それを認識して次のブロックに入れます。 –
Aleks
10文字の単語境界がない場合はどうなりますか?それは強制的に壊れるはずですね。唯一の単語境界が文字2の場合はどうでしょうか?それは早く壊れて、厄介な短い線を残すべきですか? (また、 'substring-before-last()'テンプレートに試しましたか?) – Tomalak