2016-05-03 8 views
1

XSLT 1.0で動作するテンプレートを知っている人はいますか?XSLT 1.0を使用すると、文字列の最初の単語を変数に保存する方法

例:

文字列は=

を「こんにちは私の親愛なる友人はどのようにあなたがやっている」私は単語「こんにちは」と他には何をしたいです。

+0

それはあなたが「言葉」をどう定義するかに依存します。 - P.S.以下を確認してください:[mcve] –

答えて

1

私がコメントで言ったように、それはあなたが "単語"を、より正確には、単語セパレータをどのように定義するかによって決まります。あなたの例では、それが使用して"Hello"を抽出するために簡単です:

substring-before($string, ' ') 

をしかし、それはと同様に動作しません、と言う:

"Hello, my dear friends: how are you doing?" 

か:

"Hello/Bye alternatives." 
+0

私の謝罪。どのように定期的に人々がそれを使用するかのような "単語" ...この例では、 "単語区切り"は常に "単語"を定義するスペース( "")です。 – user1869407

+0

前に部分文字列を入力してください。それは最初のスペースを探して、その前のすべてのものをつかむことでしょう、正しい? – user1869407

+1

"*"単語 "は、人々がそれをいつも使っているかのように.. *"うん、まあ、コンピュータは人ではない。 - とにかく、最初の単語の後ろにスペースがあることを確信しているなら、あなたの答えがあります。 –

0

ここにあります汎用ソリューションFXSL Functional programming library for XSLT

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
xmlns:ext="http://exslt.org/common" exclude-result-prefixes="ext"> 
<xsl:import href="strSplit-to-Words.xsl"/> 

<xsl:output omit-xml-declaration="yes" indent="yes"/> 

    <xsl:template match="/*"> 
    <xsl:call-template name="str-split-to-words"> 
     <xsl:with-param name="pStr" select="."/> 
     <xsl:with-param name="pDelimiters" select="' ,:?./&#xA;'"/> 
    </xsl:call-template> 
    </xsl:template> 
</xsl:stylesheet> 

この変換は、以下のXML文書に適用される:

<t> 
Hello, my dear friends: how are you doing? 
Buy/Sell recommendations. 
</t> 

希望、正しい結果が製造される:

<word>Hello</word> 
<word>my</word> 
<word>dear</word> 
<word>friends</word> 
<word>how</word> 
<word>are</word> 
<word>you</word> 
<word>doing</word> 
<word>Buy</word> 
<word>Sell</word> 
<word>recommendations</word> 
<word/> 

説明

このコードは、FXSLテンプレートstr-split-to-wordsを呼び出します。 $pDelimitersパラメータに文字列を含めることができます。文字列はトークン化で認識される区切り文字です。

に注意してください:スタイルシートモジュールはFXSLが存在する同じディレクトリ内のファイルとして保存されているものとする - それ以外<xsl:import>ディレクティブは、このディレクトリへの正確なファイルパスを変更する必要があります。 FXSLの

のファンダメンタルズは、ここで説明されていますhttp://fxsl.sourceforge.net/

関連する問題