[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

Re: XSLT V 1.1

Subject: Re: XSLT V 1.1
From: Paul Tchistopolskii <paul@xxxxxxx>
Date: Fri, 15 Sep 2000 19:19:14 -0700
template monster hacked
----- Original Message ----- 
From: David Carlisle <davidc@xxxxxxxxx>

> > So what's a problem? If you don't like to write 
> > 
> > <mumble href="some/xxx.xml"/>
> > 
> > <xsl:template match="mumble">
> > <xsl:apply-templates select="document(@href)"/>
> > </xsl:template>
> 
> 
> I don't like to write that as that finds some/xxx.xml relative to the
> stylesheet. (or did you man "some" here to be absolute?)

??? My proposal says that document() is resolved relative
*not* to the stylesheet. This is the whole point! 

There is no need to resolve document relatively to the 
stylesheet - only for special cases ( lookups / 'no file' )
this is needed. For those special cases I give you the 
second parameter of 'my' document() with "" hack. 
"" is not my hack.  It is current XSLT hack. 
If you don't like it - let's replace it with $argv0 - 
both things are OK with me. ;-).

Because <mumble> is in the XML input  - document()  will 
be resolved relative to URI of XML input !
 
> > You can write:
> > 
> > <mumble href="xxx.xml"/>
> > 
> > <xsl:template match="mumble">
> > <xsl:apply-templates select="document(@href, 'some')"/>
> > </xsl:template>
> 
> I don't like to write that as that puts "some" in the stylesheet but the
> whole point is that it varies depending on which mumble node in the
> document is being processed, and currently there is no way to determine
> 'some' from the stylesheet because the URI are not exposed to xpath.

Well... As I said before : $argv0 could be used instead of  ""
( this also answers your claim about "" being not 
acceptable by W3C RFC about URI. ) I mean that 
replacing "" hack with  $argv0 gives the access to URI.

My design *is* supporting the usecase you are providing.

If I have 

/dir/book.xml

<mumble href="some/chapter.xml"/>

/dir/some/chapter.xml

And I invoke 

xslt /dir/book.xml transform.xsl

And 

transform.xsl contains:

<xsl:template match="mumble">
    <xsl:apply-templates select="document(@href)"/>
</xsl:template>

because document will be resolved relatively to 
/dir/book.xml  ( not in current XSLT of course!!!! )

document() will load   /dir/some/chapter.xml

If you mean some other usecase - could you please show it to me?

> > What's the problem ?
> Neither of your suggestions provide the functionality of resolving a
> relative URI reference relative to the URI of a particular node in the
> source.

There is some misunderstanding. Your usecase is perfectly solved 
by my design, or I'm missing something. Sorry if I'm missing 
something. 
 
> > I'm fine with your solution or with *any* other solution which will 
> > turn document() monster into something simpler. 
> 
> well one assumes that even with the extra functions that I suggested
> that document() will keep its semantics for reasons of compatibility
> if nothing else, so you'll have to learn to live with the monster
> (perhaps in 2.0 you can keep it caged though:-)

Usually 'backward compatibility' or 'legacy'  is the last excuse 
used for protecting bad design solutions. 

If the only drawback of my document() is that it is 
'not backward compatible' - this is one situation. 

If there is other rationale behind current 'document' - let us reveal 
that rationale ( with some usecase, I mean ) ?

Combining multiple documents 'on-the-fly', masquerading 
lack of RTF->nodeset on-the-fly conversion ( the 
third  semantics document() has ) is almost crazy idea, 
I think. When RTF->nodeset on-the-fly conversion 
will be in the XSLT core ( and it seems that it *will* be ) - 
I think this point  will become obvious. 

If there is some argument for *that* part of document()  
( yeah - document() is a monster with 3 heads ;-) - 
I'l like to see a usecase.

I started the thread, assuming that somebody is protecting 
that third 'head' of document(), but I was wrong - there was 
an attempt to protect the second 'head' ;-) 

Let poor ill document have only one 'head' : 
load something identified by URI into node-set. ;-)

Rgds.Paul.

PS. The last but not the least. document() is part of 
XSLT , but *not* the part of XPath. This is important. ;-)



 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Current Thread

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.