は、テキストを補間や類似の文字で区切られた断片にトークン化するXSLのコードです。私は何とかテキストがトークン化されたことにより、文字列をキャプチャする可能性がある場合、たとえば、カンマを頼むか、ドットしたいなどXSLT tokenize - 区切り文字のキャプチャ
<xsl:stylesheet version="2.0" exclude-result-prefixes="xs xdt err fn" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fn="http://www.w3.org/2005/xpath-functions" xmlns:err="http://www.w3.org/2005/xqt-errors" xmlns:xdt="http://www.w3.org/2005/xpath-datatypes">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="GENERUJ">
<TEXT>
<xsl:variable name="text">
<xsl:value-of select="normalize-space(unparsed-text(@filename, 'UTF-8'))" disable-output-escaping="yes"/>
</xsl:variable>
<xsl:for-each select="tokenize($text, '(\s+("|\(|\[|\{))|(("|,|;|:|\s\-|\)|\]|\})\s+)|((\.|\?|!|;)"?\s*)')">
<xsl:choose>
<xsl:when test="string-length(.)>0">
<FRAGMENT>
<CONTENT>
<xsl:value-of select="."/>
</CONTENT>
<LENGTH>
<xsl:value-of select="string-length(.)"/>
</LENGTH>
</FRAGMENT>
</xsl:when>
<xsl:otherwise>
<FRAGMENT_COUNT>
<xsl:value-of select="last()-1"/>
</FRAGMENT_COUNT>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
</TEXT>
</xsl:template>
あなたが構築したタグの内容がわかるように
、 LENGTH、私はあなたが私の言いたいことを知っていれば、SEPARATORと呼ばれるものを追加したいと思います。私はインターネット上でこれに対する答えを見つけることができませんでした。私は簡単な解決策を探していますので、xsl変換の初心者です。前もって感謝します。
単純なサンプル入力と予想される出力を含めることができますか?それが立てば、あなたの質問は十分にはっきりしていません。 –
一般的な点: ' xsl:variable>'を使用しないでください。代わりに ' 'を使用してください。それほど冗長ではないだけでなく、はるかに効率的です。 –
うーん..入力(変数 "text")が '' blah blah blah、blah blah(blah blah)blah 'という形式のテキストファイルになり、 ' blah blah blah ... 'などと...あなたの提案を使用しようとしましたが、左にスクロールすると' disable-output-escaping = "yes"属性があります。私はエラーvhen私はそれを 'xsl:variable'タグに入れました –