RE: FW: XInclude use case for Device Independence

In general, having the ability to use AVTs (Attribute Value
Templates) anywhere in XML -- rather than just in XSLT would be a
huge win for a lot of use cases. 

>>>>> "Rotan" == Rotan Hanrahan <Rotan.Hanrahan@MobileAware.com> writes:
    Rotan> Thank you Norman. I am copying to DIWG. Your mention
    Rotan> of XSLT is in keeping with a recent update to this
    Rotan> issue in which "Attribute Value Templates" is proposed
    Rotan> for consideration. I'm sure we shall return to this
    Rotan> complex issue after the holidays.
    Rotan> 
    Rotan> Regards, ---Rotan.
    Rotan> 
    Rotan> -----Original Message----- From: Norman Walsh
    Rotan> [mailto:Norman.Walsh@Sun.COM] Sent: 21 December 2004
    Rotan> 16:01 To: public-xml-core-wg@w3.org Cc: Rotan Hanrahan
    Rotan> Subject: Re: FW: XInclude use case for Device
    Rotan> Independence
    Rotan> 
    Rotan> 
    Rotan> / Paul Grosso <pgrosso@arbortext.com> was heard to
    Rotan> say: | With permission, I am forwarding this to the
    Rotan> XML Core WG | mailing list.  Please include Rotan
    Rotan> Hanrahan on the cc line | in any replies.
    Rotan> 
    Rotan> Sigh. This is really a question of the processing
    Rotan> model which has no home since it was removed from the
    Rotan> Core WGs charter.
    Rotan> 
    Rotan> | I'm reporting on an idea and a "difficulty" related
    Rotan> to XInclude from the | DIWG, and I'm seeking some
    Rotan> comments from people more familiar with the | use and
    Rotan> direction of XInclude, which I will subsequently
    Rotan> report to DIWG.  | | At a DIWG face-to-face some weeks
    Rotan> ago, the possibility of using XInclude | with DISelect
    Rotan> [1] was discussed. This presents an interesting use
    Rotan> case | whereby DISelect provides a content negotiation
    Rotan> function, and XInclude | acquires the content selected
    Rotan> via DISelect.  | | Among the many illustrative cases,
    Rotan> we considered the following: | | <?xml version='1.0'?>
    Rotan> | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0
    Rotan> Strict//EN" |
    Rotan> "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> |
    Rotan> <html | xmlns="http://www.w3.org/1999/xhtml"
    Rotan> xml:lang="en" lang="en" |
    Rotan> xmlns:xi="http://www.w3.org/2001/XInclude"> |
    Rotan> xmlns:sel="http://www.w3.org/2004/CSelection"> |
    Rotan> <head><title>News</title></head> | <body> | <h1>Top
    Rotan> Story</h1> | <sel:select> | <sel:when
    Rotan> sel:expr="dc:cssmq-width('px') &gt; 200"> |
    Rotan> <xi:include
    Rotan> href="/full_story.xyz?date=EXPRESSION_GOES_HERE"/> |
    Rotan> </sel:when> | <sel:otherwise> | <xi:include
    Rotan> href="/small_story.xyz?date=EXPRESSION_GOES_HERE"/> |
    Rotan> </sel:otherwise> | </sel:select> | </body> | </html> |
    Rotan> | In this case we used DISelect to choose a suitable
    Rotan> version of a news | story. The selection is based on
    Rotan> the pixel width of the screen similar | to the
    Rotan> approach used in CSS Media Queries. This is a simple
    Rotan> template | mechanism. However, the href of the
    Rotan> XInclude requires a parameter to be | passed to the
    Rotan> process. We have illustrated this as a "date" value |
    Rotan> determined by an expression. We have considered the
    Rotan> possibility of using | XPath expressions within the
    Rotan> href attribute, but currently the XInclude | proposal
    Rotan> only supports escaping of characters. It does not
    Rotan> support any | form of "evaluation" of the href.  | |
    Rotan> Can you advise on any alternative strategy that might
    Rotan> be adopted to | facilitate the passing of evaluated
    Rotan> parameters to URLs referenced by | XInclude markup?
    Rotan> 
    Rotan> I don't think there's anything you can do to get
    Rotan> XInclude to perform any evaluation for you. That's
    Rotan> just a URI as far as its concerned.
    Rotan> 
    Rotan> It seems to me that you need some other step in your
    Rotan> processing model to perform the evaluation and that
    Rotan> step can finess XInclude.
    Rotan> 
    Rotan> Consider the following:
    Rotan> 
    Rotan> <?xml version='1.0'?> <!DOCTYPE html PUBLIC
    Rotan> "-//W3C//DTD XHTML 1.0 Strict//EN"
    Rotan> "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    Rotan> <html xmlns="http://www.w3.org/1999/xhtml"
    Rotan> xml:lang="en" lang="en"
    Rotan> xmlns:xi="http://www.w3.org/2001/XInclude">
    Rotan> xmlns:sel="http://www.w3.org/2004/CSelection"
    Rotan> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    Rotan> xmlns:fn="http://www.w3.org/2004/10/xpath-functions"
    Rotan> xsl:version="2.0"> <head><title>News</title></head>
    Rotan> <body> <h1>Top Story</h1> <sel:select> <sel:when
    Rotan> sel:expr="dc:cssmq-width('px') &gt; 200"> <xsl:element
    Rotan> name="xi:include"> <xsl:attribute name="href"
    Rotan> select="concat('/full_story.xyz?date=',
    Rotan> fn:current-date())"/> </xsl:element> </sel:when>
    Rotan> <sel:otherwise> <xsl:element name="xi:include">
    Rotan> <xsl:attribute name="href"
    Rotan> select="concat('/small_story.xyz?date=',
    Rotan> fn:current-date())"/> </xsl:element> </sel:otherwise>
    Rotan> </sel:select> </body> </html>
    Rotan> 
    Rotan> If you run that through an XSLT processor then run the
    Rotan> result document through an XInclude processor, you'll
    Rotan> get the result you want.
    Rotan> 
    Rotan> Alternatively, you could invent an expression language
    Rotan> and say that your processing model is: load the
    Rotan> document with XInclude suppressed, evaluate the
    Rotan> expressions, and then apply an XInclude processor.
    Rotan> 
    Rotan> | One alternative proposed at the meeting was an
    Rotan> extension to DISelect | that would mimic (or map to)
    Rotan> XInclude but would permit XPath expressions | to
    Rotan> create the href attribute value. This would, however,
    Rotan> create a new DI | variant of XInclude and we would
    Rotan> need to keep the DI version of XInclude | in step with
    Rotan> the official version of XInclude. This idea does not |
    Rotan> attract much support, so we are seeking advice on how
    Rotan> to proceed.
    Rotan> 
    Rotan> If you decide to go that route, I think you should
    Rotan> probably define the semantics along these lines: AVTs
    Rotan> in the di:include element are evaluated and then the
    Rotan> element is renamed xi:include and processed per normal
    Rotan> XInclude processing. But it's definitely ugly.
    Rotan> 
    Rotan> | Any advice or guidance you can offer us would be
    Rotan> most welcome, and feel | free to share this request
    Rotan> with whoever you deem may be best suited to | offer
    Rotan> support.
    Rotan> 
    Rotan> As near as I can tell, you're going to have to come to
    Rotan> grips with some sort of processing model that allows
    Rotan> you to either create xi:include elements or load them
    Rotan> without processing them and then process them.
    Rotan> 
    Rotan>                                         Be seeing you,
    Rotan> norm
    Rotan> 
    Rotan> -- Norman.Walsh@Sun.COM / XML Standards Architect /
    Rotan> Sun Microsystems, Inc.  NOTICE: This email message is
    Rotan> for the sole use of the intended recipient(s) and may
    Rotan> contain confidential and privileged information.  Any
    Rotan> unauthorized review, use, disclosure or distribution
    Rotan> is prohibited.  If you are not the intended recipient,
    Rotan> please contact the sender by reply email and destroy
    Rotan> all copies of the original message.

-- 
Best Regards,
--raman
------------------------------------------------------------
T. V. Raman:  PhD (Cornell University)
IBM Research: Human Language Technologies
Architect:    RDC --- Conversational And Multimodal WWW Standards
Phone:        1 (408) 927 2608   T-Line 457-2608
Fax:        1 (408) 927 3012     Cell: 1 650 799 5724
Email:        tvraman@us.ibm.com
WWW:      http://almaden.ibm.com/u/tvraman
AIM:      TVRaman
GPG:          http://www.almaden.ibm.com/cs/people/tvraman/raman-almaden.asc
Snail:        IBM Almaden Research Center,
              650 Harry Road
              San Jose 95120

Received on Tuesday, 21 December 2004 16:23:46 UTC