如何测试字符串值是否为正确的xslt模式?

时间:2016-02-12 16:49:29

标签: java xslt saxon

我想知道如何测试字符串值是否是正确的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”。我不明白为什么?

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

您使用的是一个实际上并非设计为外部调用的低级接口。当然,如果你正确设置它所需的一切,它将会工作:但是没有文档告诉你它是什么,你只能通过调试发生的故障来解决它。

我建议改为使用专为应用程序使用而设计的s9api接口XPathCompiler.compilePattern(),因此可能更强大。