[XSL-LIST Mailing List Archive Home]
[By Thread]
[By Date]
Re: [xsl] [XSL] How can I seek info in XML files and tranform it using XSLT to answer a query
Subject: Re: [xsl] [XSL] How can I seek info in XML files and tranform it using XSLT to answer a query From: "Robert Koberg" <rob@xxxxxxxxxx> Date: Wed, 11 Jul 2001 08:01:40 -0700 |
Doesn't XYZFind offer a free demo verion (5 concurrent users)? You could go to Evan's company (or Mike's probably) and download a demo. It will be much easier and much better performance. ----- Original Message ----- From: "Evan Lenz" <elenz@xxxxxxxxxxx> To: <xsl-list@xxxxxxxxxxxxxxxxxxxxxx> Sent: Wednesday, July 11, 2001 7:22 AM Subject: RE: [xsl] [XSL] How can I seek info in XML files and tranform it using XSLT to answer a query > Paul Brown wrote: > > If you don't want the implementation necessarily to be fast, you can spoof > > an XSLT processor into thinking that your collection of files is one large > > document, and that will allow you to use XPath as your query language. > > That would be one way of doing it, but it's problematic for maintaining at > least 1) the distinction between documents (whether fragments or > well-formed, since XSLT allows either), 2) the ability to also access > documents using the document() function, and 3) correct behavior of the id() > function (which spans only one document). > > I would suggest using another approach which still lets you use XPath as > your query language. Instead of combining all the documents into one tree, > simply create a node-set that consists of all the root nodes of the input > documents. You could then get the URIs of all documents via a config file. > In the example below, I'm assuming the config file is the source tree for > this stylesheet. > > Config file: > > <documents> > <document uri="foo.xml"/> > <document uri="bar.xml"/> > <document uri="bat.xml"/> > </documents> > > > Stylesheet: > > <xsl:stylesheet version="1.0" > xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> > > <!-- selects a set of all the input root nodes --> > <xsl:variable name="input" select="document(/documents/document/@uri)"/> > > <xsl:for-each select="$input/any/xpath/query"> > <!-- do something --> > </xsl:for-each> > > </xsl:stylesheet> > > Note that using $input as the root of your path expression allows you to use > XPath/XSLT as a query language in a very similar way to XQL and XQuery. You > will still be able to use the document() function as another way of > accessing documents specifically by name. Likewise, the id() function will > still continue to work since individual documents retain their identity (and > there won't be any ID clashes between multiple documents). Finally, if you > would like to copy a document or documents whose name you don't know (but > for which a certain query constraint applies), this will work as well > (including the original PIs and comments outside of the document element), > e.g. <xsl:copy-of select="/"/> when you don't know which document the > current node is in. > > Hope this helps, > > Evan Lenz > XYZFind Corp. > > > -----Original Message----- > > From: owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx > > [mailto:owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx]On Behalf Of Paul Brown > > Sent: Wednesday, July 11, 2001 6:37 AM > > To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx > > Subject: RE: [xsl] [XSL] How can I seek info in XML files and tranform > > it using XSLT to answer a query > > > > > > > > edouard panie: > > > Thanks for answering. I should give some more details: > > > -money is not the issue, I dont have any (it's a > > > school project!) > > > > Since you're a student, you're a very rich man indeed -- you have lots of > > time. > > > > > -the pages will only be accessible to a few people, > > > therefore there won't be more than a few hits a day. > > > > If you don't want the implementation necessarily to be fast, you can spoof > > an XSLT processor into thinking that your collection of files is one large > > document, and that will allow you to use XPath as your query language. > > > > Disclaimer 1: an XML database is going to do a MUCH, MUCH better job than > > the hack below. > > > > Here's how you do it. > > > > 1) Take a look at the old SQL extensions for XalanJ2 or the XSLT-based > > flatfile mapper that I wrote as an example for a Java/XSLT class. > > (http://www.fivesight.com/downloads/xsltflatfile.asp) > > > > 2) Implement a spoof DOM that mirrors the concatenation of your > > directory/file structure and your individual XML files. For example, this > > means that the implementation of Node that represents a directory has to > > return a list of the files it contains (as wrapping Nodes) when > > getChildNodes() is called. > > > > I would suggest implementing an equivalent<directory name="foo"><file > > name="bar.xml" >[... ...]</file><file name="baz.xml" >[... > > ...]</file></directory> > > > > Where the children of file are the children of the document element of the > > XML document contained in the file. > > > > 3) Do something really, really naughty and make use of how Xalan actually > > traverses XML documents on an xsl:apply-templates call. (You will NOT be > > able to use xsl:for-each!) This is present in the examples that I mention > > in (1) above. > > > > Cheers, > > > > - Paul > > > > > > XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list > > > > > XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list > XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: [xsl] [XSL] How can I seek info, Evan Lenz | Thread | [xsl] table column to fit graphic, Lisa Rupe |
[xsl] Where does xalan redirect:wri, Ruggier, Mario | Date | Re: [xsl] Where does xalan redirect, Robert Koberg |
Month |