我想從Java代碼來驗證Schematron的條件(這到底是一個XSLT布爾評價)知道,如果語法正確。我們的用戶可以提供額外的驗證規則,我們將轉換爲schematron來驗證給定的XML文件,但我們想知道這些規則是否最終有意義。如何編譯Schematron的條件(的XPath/XSLT 2.0)在Java中
我有方法試圖從編譯javax.xml.xpath.XPath中,但似乎缺少的東西,如「作爲澆注料」等默認xslt2.0功能/經營者。我試圖提供一個默認的XPathFuntionResolver來告訴XPath忽略這些函數,但似乎沒有辦法。
XPath xpath = XPathFactory.newInstance().newXPath();
xpath.setXPathFunctionResolver(new XPathFunctionResolver() {
@Override
public XPathFunction resolveFunction(QName functionName, int arity) {
return new XPathFunction() {
@Override
public Object evaluate(List args) throws XPathFunctionException {
return null;
}
};
}
});
哪個是驗證這些用戶定義規則的最佳方法?
假設您爲您的XSLT/XPath/Schematron使用特定版本的Saxon 9,那麼在您的代碼中,您可以使用例如'XPath xpath = new net.sf.saxon.xpath.XPathFactoryImpl()。newXPath();'使用XPath的Saxon實現。 –
是的,我使用的是Saxon8實現,這也適用於這個版本:d 我不得不添加的唯一額外的事情是一個空XPathVariableResolver,如 'xpath.setXPathVariableResolver(新XPathVariableResolver(){ \t公衆對象resolveVariable(的QName爲arg0){ \t \t \t回報 「」; \t \t} });' – Yampeku