[xquery-talk] how to construct XML via strings
Jonathan Robie
jonathan.robie at datadirect.com
Mon Oct 2 14:07:48 PDT 2006
Hi Maxim,
If I understand you correctly, you want to access the results as a
string, and you want to avoid a possible performance hit from building
an object structure to represent the result, but logically, you are
building XML. Did I get that right?
If so, I think your gripe is not with XQuery, but with the way results
are build and represented physically in the environment. If you are
operating in a Java environment, why not use XQJ to issue an XQuery,
then stream the results as text? Depending on what you are trying to do,
you might be able to use an external variable to specify content for the
XML you want to build, e.g.instead of:
("<a>","123","</a>")
Write an XQuery that takes the content as an external variable:
declare variable $content external;
<a>{ $content }</a>
In XQJ, bind the external variable before executing the query, and
retrieve results as text:
XQDataSource dataSource = new DDXQDataSource();
dataSource.setConfigFile(configFile);
XQConnection connection = dataSource.getConnection();
FileReader fileReader = new
FileReader(xquerySourceFile);
XQPrepared Expression preparedExpression =
connection.prepareExpression(fileReader);
preparedExpression.bindString(new QName("content"), "123");
XQSequence xqSequence = preparedExpression.executeQuery();
OutputStream o_stream = new FileOutputStream("output.xml");
result.writeSequence(o_stream);
> It also seems that Michael Kay is right that it is one of the most
> problematic features of XQuery.
>
Well, he actually said providing this feature in XSLT 1.0 was
problematic, so the feature was dropped in XSLT 2.0. This feature has
never been part of XQuery. I don't think he was suggesting that the lack
of this functionality has been a problem in XQuery.
> We are developing our own XQuery
> implementation called Sedna and we cannot understand how we can extend
> XQuery in a natural way to support the feature.
>
Can you say more about who would use this feature how in your
environment? It might help us think of alternative designs.
Jonathan
--
Read my Blog: http://blogs.datadirect.com/jonathan_robie/
Learn XQuery: http://media.datadirect.com/download/docs/ddxquery/tutorial_query.html
Learn XQJ (the JDBC for XQuery): http://www.datadirect.com/developer/xquery/topics/xqj_tutorial/
Get DataDirect XQuery: http://www.datadirect.com/products/xquery/
More information about the talk
mailing list