我想知道如何测试字符串值是否是正确的xslt模式。
我尝试使用saxon 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模式,如
// toto和titi
我得到了“XPathException”并且它很好但是有一个好的xslt模式我有一个“NullPointerException”。我不明白为什么?
感谢您的帮助!
答案 0 :(得分:0)
您使用的是一个实际上并非设计为外部调用的低级接口。当然,如果你正确设置它所需的一切,它将会工作:但是没有文档告诉你它是什么,你只能通过调试发生的故障来解决它。
我建议改为使用专为应用程序使用而设计的s9api接口XPathCompiler.compilePattern()
,因此可能更强大。