2016-08-23 3 views
0

Есть ли способ использовать регулярное выражение в XSLT 1.0 с XML в качестве входного и желаемого вывода? Я пытаюсь использовать тест, чтобы подтвердить, что переменная находится в формате временного кода, то есть hh: mm: ss: ff.Regex in XLST 1.0

Регулярное выражение настоящее время я работаю с есть:

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

Для получения времени значение кода в формате чч: мм: сс: и далее следующие требования должны быть удовлетворены:

[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 -5] [0-9] (: |;) [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. Ваш процессор may предлагает способ использования регулярного выражения в качестве расширения.

  3. Вы можете легко выполнить частичную проверку проверяющего формата (но а не содержания) переменные как:

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

    Это будет возвращать верно для любой строки, отформатированной "##:##:##:##" (где любой из двоеточий может быть точкой с запятой). Однако, это не будет проверка часов составляет менее 24, или в минуты/секунды будучи менее 60.

    Если вы хотите, такие тесты, вы должны добавить их по отдельности, например:

    substring($TC, 1, 2) < 24 
    

    для часов.