2011-12-30 30 views
0

xslt 1.0を使用してxmlを変換しています。xslt 1.0のregexpエラー

hello This is very nice day. Christmas is about to come and christmas preparation is just on this is awesome!! 

はこれを行うために、私はこのXSLT試した:私はこのようにそれをフォーマットしたい

hello 1s: This is very nice day. 9s: Christmas is about to come 14s: and christmas preparation is just on 25s: this is awesome!! 

<?xml version='1.0' encoding='UTF-8' ?> 
<xsl:stylesheet version='1.0' xmlns:xsl='http://www.w3.org/1999/XSL/Transform' xmlns:regexp="http://exslt.org/regular-expressions" 
       extension-element-prefixes="regexp" > 
<xsl:import href="regexp.xsl" /> 
    <xsl:template match='/'> 
     <xsl:value-of select="regexp:replace(string(.), '[0-9]{1,4}s: ', 'g', '')" /> 
    </xsl:template> 
</xsl:stylesheet> 

をしかし、私は

私はこの文字列を持っていますそれを実行すると次のエラーが発生します。

java.lang.NoSuchMethodException: For extension function, could not find method java.lang.String.replace([ExpressionContext,] #STRING, #STRING, #STRING). 

私は間違っていますか?

答えて

0

fn:replace(string,pattern,replace)はどうですか?これはXSLT1.0でも利用可能かどうかわかりません。チェックしてください。 string.replace機能について

例は、正規表現パターンをとる置き換える上記のリンクでドキュメントを1として

hereを見つけることができます。

fn:replace関数は、正規表現に一致する文字列の部分を置き換えます。使用される正規表現の構文は、XQueryXPath/XSLTにいくつかの変更/追加が加えられたXMLスキーマによって定義されています。 $ pattern引数は正規表現です。正規表現の力を持っているのは良いことですが、特定の文字列を置き換えるだけであれば、正規表現に慣れている必要はありません。特別な文字が含まれていない限り、$ patternに置き換えたい文字列を指定することができます。

ので、あなたはFNを使用することができます(テキスト()、 '[0-9] {1,4} S:'、 '')を交換

+0

こんにちは、fn:replace fuctionは修正テキストを置き換えますが、私の場合は置換テキストが修正されません。だから私はそれにregexpを適用する必要があります..と私はsolrの検索エンジンでLinuxサーバーで私のxsltを実行しています。そのため、この形式でエラーが発生します。 – meghana

+0

replace関数のパターンは、正規表現のパターン –

+0

hmm ...を参照しています。私はそれを見ましたが、xslt 1.0でアクセスできません。 – meghana

1

ノーあり、内蔵された正規表現のサポートXSLT 1.0では。呼び出しているEXSLT関数は、一部のプロセッサで使用可能な拡張関数のサードパーティ仕様です。表示されているエラーメッセージには、特定のプロセッサで使用できないことが示唆されています(または、そのプロセッサのために何らかの方法でインストール/構成する必要があります)。

Javaを使用しているため、XSLT 2.0をSaxonの形式で使用する際に障害はありません。