2016-02-12 34 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; 
    } 

當我的模式是一樣

// TOTO和蒂蒂

我 「XPathException的」 壞XSLT模式,這是件好事但有一個很好的xslt模式,我有一個「NullPointerException」。我不明白爲什麼?

謝謝你的幫助!

+3

你吞下了整個異常。將一個''e.printStackTrace()''添加到NullPointerException的catch塊併發布詳細信息。 – f1sh

+1

這段代碼是否會編譯?你傳遞一個參數'String p'並聲明一個'Pattern p'。 – Filburt

回答

0

您正在使用的低級別界面並非真的被設計爲在外部調用。當然,如果你設置了正確需要的所有東西,但是沒有文檔可以告訴你它是什麼,你只能通過調試發生的故障來解決它。

我會建議改爲使用s9api接口XPathCompiler.compilePattern(),這是專爲應用程序使用而設計的,因此可能會更健壯。

相關問題