You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xmlbeans.apache.org by ra...@apache.org on 2006/11/16 18:51:32 UTC
svn commit: r475835 - in
/xmlbeans/trunk/src/xpath_xquery/org/apache/xmlbeans/impl:
xpath/saxon/XBeansXPath.java xquery/saxon/XBeansXQuery.java
Author: radup
Date: Thu Nov 16 09:51:32 2006
New Revision: 475835
URL: http://svn.apache.org/viewvc?view=rev&rev=475835
Log:
Changed the XQuery/XPath support to work with Saxon 8.8 too.
Modified:
xmlbeans/trunk/src/xpath_xquery/org/apache/xmlbeans/impl/xpath/saxon/XBeansXPath.java
xmlbeans/trunk/src/xpath_xquery/org/apache/xmlbeans/impl/xquery/saxon/XBeansXQuery.java
Modified: xmlbeans/trunk/src/xpath_xquery/org/apache/xmlbeans/impl/xpath/saxon/XBeansXPath.java
URL: http://svn.apache.org/viewvc/xmlbeans/trunk/src/xpath_xquery/org/apache/xmlbeans/impl/xpath/saxon/XBeansXPath.java?view=diff&rev=475835&r1=475834&r2=475835
==============================================================================
--- xmlbeans/trunk/src/xpath_xquery/org/apache/xmlbeans/impl/xpath/saxon/XBeansXPath.java (original)
+++ xmlbeans/trunk/src/xpath_xquery/org/apache/xmlbeans/impl/xpath/saxon/XBeansXPath.java Thu Nov 16 09:51:32 2006
@@ -51,6 +51,7 @@
_contextVar = contextVar;
this.defaultNS = defaultNS;
this.namespaceMap = namespaceMap.entrySet().toArray();
+ this.needsDomSourceWrapping = needsDOMSourceWrapping();
}
/**
@@ -101,7 +102,7 @@
xpe.setStaticContext(sc);
Variable thisVar = sc.declareVariable(_contextVar);
- thisVar.setValue(rootNode);
+ thisVar.setValue(needsDomSourceWrapping ? rootNode : node);
XPathExpression exp = xpe.createExpression(_queryExpr);
@@ -131,6 +132,33 @@
return selectNodes(node);
}
+ /**
+ * @return true if we are dealing with a version of Saxon 8.x where x<=6
+ */
+ private static boolean needsDOMSourceWrapping()
+ {
+ int saxonMinorVersion;
+ int saxonMajorVersion;
+ String versionString = net.sf.saxon.Version.getProductVersion();
+ int dot1 = versionString.indexOf('.');
+ if (dot1 < 0)
+ return false;
+ int dot2 = versionString.indexOf('.', dot1 + 1);
+ if (dot2 < 0)
+ return false;
+ try
+ {
+ saxonMajorVersion = Integer.parseInt(versionString.substring(0, dot1));
+ saxonMinorVersion = Integer.parseInt(versionString.substring(dot1 + 1, dot2));
+ return saxonMajorVersion == 8 && saxonMinorVersion <= 6;
+ }
+ catch (NumberFormatException nfe)
+ {
+ return false;
+ }
+ }
+
+ private boolean needsDomSourceWrapping;
private Object[] namespaceMap;
private String _queryExpr;
private String _contextVar;
Modified: xmlbeans/trunk/src/xpath_xquery/org/apache/xmlbeans/impl/xquery/saxon/XBeansXQuery.java
URL: http://svn.apache.org/viewvc/xmlbeans/trunk/src/xpath_xquery/org/apache/xmlbeans/impl/xquery/saxon/XBeansXQuery.java?view=diff&rev=475835&r1=475834&r2=475835
==============================================================================
--- xmlbeans/trunk/src/xpath_xquery/org/apache/xmlbeans/impl/xquery/saxon/XBeansXQuery.java (original)
+++ xmlbeans/trunk/src/xpath_xquery/org/apache/xmlbeans/impl/xquery/saxon/XBeansXQuery.java Thu Nov 16 09:51:32 2006
@@ -46,6 +46,7 @@
*/
public XBeansXQuery(String queryExpr, String contextVar, Integer boundary)
{
+ this.needsDomSourceWrapping = needsDOMSourceWrapping();
this.config = new Configuration();
config.setTreeModel(net.sf.saxon.event.Builder.STANDARD_TREE);
this._stcContext = new StaticQueryContext(config);
@@ -87,11 +88,18 @@
Map.Entry entry = (Map.Entry) it.next();
if (entry.getValue() instanceof XmlTokenSource)
{
- DOMSource domSource;
- domSource = new DOMSource(((XmlTokenSource)
- entry.getValue()).getDomNode());
+ Object paramObject;
+ // Saxon 8.6.1 requires that the Node be wrapped
+ // into a DOMSource, while later versions require that
+ // it not be
+ if (needsDomSourceWrapping)
+ paramObject = new DOMSource(((XmlTokenSource)
+ entry.getValue()).getDomNode());
+ else
+ paramObject = ((XmlTokenSource) entry.getValue()).
+ getDomNode();
dynamicContext.setParameter((String) entry.getKey(),
- domSource);
+ paramObject);
}
else if (entry.getValue() instanceof String)
dynamicContext.setParameter((String) entry.getKey(),
@@ -118,10 +126,37 @@
}
}
+ /**
+ * @return true if we are dealing with a version of Saxon 8.x where x<=6
+ */
+ private static boolean needsDOMSourceWrapping()
+ {
+ int saxonMinorVersion;
+ int saxonMajorVersion;
+ String versionString = net.sf.saxon.Version.getProductVersion();
+ int dot1 = versionString.indexOf('.');
+ if (dot1 < 0)
+ return false;
+ int dot2 = versionString.indexOf('.', dot1 + 1);
+ if (dot2 < 0)
+ return false;
+ try
+ {
+ saxonMajorVersion = Integer.parseInt(versionString.substring(0, dot1));
+ saxonMinorVersion = Integer.parseInt(versionString.substring(dot1 + 1, dot2));
+ return saxonMajorVersion == 8 && saxonMinorVersion <= 6;
+ }
+ catch (NumberFormatException nfe)
+ {
+ return false;
+ }
+ }
+
private XQueryExpression _xquery;
private String _query;
private String _contextVar;
private StaticQueryContext _stcContext;
private Configuration config;
private int boundary;
+ private boolean needsDomSourceWrapping;
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@xmlbeans.apache.org
For additional commands, e-mail: commits-help@xmlbeans.apache.org