2016-02-12 10 views
-1

Я хотел бы узнать, как проверить, является ли строковое значение правильным xslt-образцом.Как проверить, является ли строковое значение правильным xslt-шаблоном?

Я пытаюсь использовать API-интерфейс саксона для этого.

Я написал:

import net.sf.saxon.Configuration; 
import net.sf.saxon.pattern.Pattern; 
import net.sf.saxon.pattern.PatternParser20; 
import net.sf.saxon.sxpath.IndependentContext; 
import net.sf.saxon.trans.XPathException; 

/** 
* @param p the xslt pattern to be tested 
*/ 
public static boolean test_Pattern2(String p) { 

     PatternParser20 pat = new PatternParser20(); 
     IndependentContext staticContext = new IndependentContext();   
     try { 
      Pattern p = pat.parsePattern(p, staticContext); 
     } catch (XPathException ex) { 
      System.out.println("it is not a xslt pattern valid!"); 
      return false; 
     } 
     catch (NullPointerException ex) { 
      System.out.println("NullPointerException"); 
     } 
     System.out.println("it is a xslt pattern valid!");   
     return true; 
    } 

Когда моя картина плохая картина, как XSLT

// тото и Тити

я получил "XPathException", и это хорошо но с хорошим шаблоном xslt у меня было «NullPointerException». Я не понимаю, почему?

Благодарим за помощь!

+3

Вы проглотите все исключение. Добавьте '' e.printStackTrace() '' в блок catch исключения NullPointerException и опубликуйте детали. – f1sh

+1

Скомпилирует ли этот код? Вы передаете параметр 'String p' и объявляете' Pattern p'. – Filburt

ответ

0

Вы используете интерфейс низкого уровня, который на самом деле не предназначен для вызова извне. Это будет работать, конечно, если вы настроите все, что ему нужно, правильно, но нет никакой документации, чтобы рассказать вам, что это такое, вы сможете только решить эту проблему, отлаживая возникающие сбои.

Я бы рекомендовал вместо этого использовать интерфейс s9api XPathCompiler.compilePattern(), который предназначен для использования в приложениях и поэтому, вероятно, будет более надежным.

Смежные вопросы