package org.tigris.juxy.util; import javax.xml.transform.TransformerFactory; /** * @author Pavel Sher */ public class XSLTEngineSupport { private TransformerFactory factory; public XSLTEngineSupport() { this.factory = TransformerFactory.newInstance(); } public XSLTEngineSupport(final TransformerFactory factory) { this.factory = factory; } public boolean isOracleXDK() { return "oracle.xml.jaxp.JXSAXTransformerFactory".equals( factory.getClass().getName()); } public boolean isXSLT20Supported() { return isSaxon8(); } public boolean isSaxon8() { return "net.sf.saxon.TransformerFactoryImpl".equals( factory.getClass().getName()); } public boolean isCustomURIResolverSupported() { return !(isJavaXalanXSLTC() && System.getProperty("java.vm.version").startsWith("1.5.")); } public boolean isJavaXalanXSLTC() { return "com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl".equals( factory.getClass().getName()); } public boolean isTracingSupported() { return !isJavaXalanXSLTC() && !isOracleXDK(); } public boolean isXalanXSLTC() { return "org.apache.xalan.xsltc.trax.TransformerFactoryImpl".equals( factory.getClass().getName()); } public boolean isXalanXSLT() { return "org.apache.xalan.processor.TransformerFactoryImpl".equals( factory.getClass().getName()); } public String getJavaExtensionNamespace(Class clazz) { if (isXalanXSLTC()) return "http://xml.apache.org/xalan/xsltc/java/" + clazz.getName(); if (isXalanXSLT()) return "http://xml.apache.org/xslt/java/" + clazz.getName(); if (isOracleXDK()) return "http://www.oracle.com/XSL/Transform/java/" + clazz.getName(); return "java:" + clazz.getName(); } }