2016-08-23 11 views
0

XSLT 1.0でregexをXMLと入力と出力に使用する方法はありますか?変数がタイムコード形式(hh:mm:ss:ff)であることを確認するテストを使用しようとしています。正規表現XLST 1.0

私は現在で働いていた正規表現は次のとおりです。

[0-1][0-9]|2[0-3])(:|;)[0-5][0-9](:|;)[0-5][0-9](:|;)[0-9][0-9]

は、書式hhの値のタイムコードを生成するには:mm:ssのが次の要件が満たされなければならないFF:

[hh = 00 - 19 or 20 - 23] 
[; or :] 
[mm = 00 - 59] 
[; or :] 
[ss = 00 -59] 
[; or :] 
[ff = 00 - 99] 
+0

[XSLT 1.0で正規表現を使用するにはどうすればよいですか?](http://stackoverflow.com/questions/8916208/how-do-i-use-a-regular-expression-in -xslt-1-0) – revo

+0

これはやや似ていますが、この式は1と1文字よりずっと複雑です。 ([0-1] [0-9] | 2 [0-3])(:|;)[0-5] [0-9](:|;)[0 (0 | 9){0-9](@ [0-9] +(\。[0-9] {1、}){0,1} {0,1} – hguza

+0

答えは、前の質問と本質的に同じになります。 XSLT 1.0は正規表現をサポートしていません。ご使用のプロセッサがEXSLT正規表現関数(http://exslt.org/regexp/)をサポートしている場合は、それらを使用してください。さもなければ、それを偽ってください。あなたが描くパターンは、テストして処理するのが難しくありません。 –

答えて

0
  1. XSLT 1.0に正規表現のサポートはありません。

  2. プロセッサーは、正規表現を拡張子として使用する方法を提供しています。あなたは簡単として、変数の形式(しかし ない内容)を検証し、部分的テストを実行することができ

  3. translate($TC, '123456789;', '000000000:') ='00:00:00:00' 
    

    これは("##:##:##:##" としてフォーマット任意の文字列に対してtrueを返します。どのコロンもセミコロンにすることができます)。しかし、それは時間の チェックが24未満であることではないだろう、または分/秒が 60未満

    ているあなたは、このようなテストをしたい場合は、あなたがそれらを個別に追加する必要があります、 例えば:

    substring($TC, 1, 2) < 24 
    

    時間。