Subject: Re: [xsl] Content constructors and sequences From: Jeni Tennison <jeni@xxxxxxxxxxxxxxxx> Date: Wed, 9 Jan 2002 16:42:52 +0000 |
David, >> Possibly - can you think of some examples where you need to access >> a namespace node given you have access to a QName?) > > does the qname also have the prefix? in xpath 1 name() ise defined > in terms of finding a namespace node in scope and getting the prefix > from there... Officially, according to the XML Schema data types Rec, it doesn't, but I would imagine that to support user expectations about xs:QNames, they will do in most applications. Getting the string value of a xs:QName is always going to be a strange affair. To get a lexical value ("prefix:local-part") for a xs:QName you have to have some idea about what namespaces are in scope. Imagine I create a variable called $foo as follows: <xsl:variable xmlns:my="http://www.jenitennison.com/" name="foo" select="QName-from-string('my:qname')" /> And then somewhere else I do: cast as xs:string($foo) then where does the prefix come from? The in-scope namespaces from the stylesheet? From the context node? What happens if there is no context node (because we're iterating over a sequence)? What happens if there's no namespace node in scope on the context node? What happens if the stylesheet no longer has the relevant namespace in scope? The only sensible thing (I *think*) is to use the prefix that was used during construction of the QName and accept the fact that this prefix might not be associated with any namespace any more, or might be associated with a completely different namespace, which means you can't round-trip the xs:QName. I think that's acceptable because if you wanted to get the namespace-URI out of the QName then you should never have turned it into a string in the first place! :) Lots of this would go away if there was a canonical representation for QNames that didn't involve in-scope namespaces... >> That would force people to use element node 'holders' for them >> instead. > > but that means you can construct sequences of anything except > attributes, which seems a bit odd. Sequences of anything except parentless attributes, I think. You could still construct sequences of attributes, as long as they belonged to some element (which might be documentless). It's the same as the limitation on the content of RTF variables as it stands (RTF variables can't directly hold attribute or namespace nodes because document nodes can't have attribute or namespace nodes). But I agree it's weird and not very helpful. >> Third, you could change the data model so that the namespaces >> accessor on attribute nodes returned a sequence of in-scope >> namespaces for that attribute. That would be a departure from the >> XML Infoset, though. > > Yes that occurred to me as well. I suspect that would be the most > natural thing to do, although you'd still have to adjust the xpath2 > namepsace nodes shared at the document level, I think. It's really not clear to me where these namespace nodes 'live'. I imagined that there was a whole bunch of them just floating around in memory, with element nodes pointing to them as required, rather than them being associated with a document at any point (they don't even have a base URI, which says something!). Cheers, Jeni --- Jeni Tennison http://www.jenitennison.com/ XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Content constructors and , David Carlisle | Thread | Re: [xsl] Content constructors and , David Carlisle |
Re: [xsl] xsl architecture issue, David Carlisle | Date | Re: [xsl] XSL:FO and Unicode Fonts, Lee Goddard |
Month |