OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: XQuery & XSLT was RE: Verboseness - XML Syntax for XQuery 1.0(XQueryX)



On Tue, 19 Jun 2001, Jonathan Robie wrote:

> I need more detail on this to understand what you want. Let me ask you a 
> few questions based on one of Evan's examples 
> (http://xmlportfolio.com/xsltuk/slides/Q18b.html).
> 
> In the new XQuery syntax, it looks like this:
> 
> FOR $h IN //holding
> RETURN
>          <holding>
>                  { $h/title }
>                  {
>                          IF ($h/@type = "Journal")
>                          THEN $h/editor
>                          ELSE $h/author
>                  }
>          </holding>
> SORTBY(title)
> 
> Note that the curly braces indicate expressions to be evaluated, as opposed 
> to literal content.

This is actually incredibly similar to the syntax for "interpolations"
in XML Script 2 (see http://www.xmlscript.org/), where the above would
probably be something like:

<xs:output>
  <holding>
    # $h/title #
    <xs:if test="$h/@type = 'journal'">
      <xs:then># $h/@editor #</xs:then>
      <xs:else># $h/@author #</xs:else>
    </xs:if>
  </holding>
</xs:output>

The text between '#' signs is an interpolation (the
interpolation delimiters don't have to be '#' signs, that's just the
default). If you don't like the 'non-XMLness' you can write

<xs:output>
  <holding>
    <xs:eval>$h/title</xs:eval>
    <xs:if test="$h/@type = 'journal'">
      <xs:then><xs:eval>$h/@editor</xs:eval></xs:then>
      <xs:else><xs:eval>$h/@author</xs:eval></xs:else>
    </xs:if>
  </holding>
</xs:output>

though you obviously can't use an <xs:eval> inside attribute values,
whereas you can put interpolations inside attribute values.

-- 
Richard Lanyon, Software Engineer     DecisionSoft Ltd.
Telephone: +44-1865-203192            http://www.decisionsoft.com
       "The medium is the message" -- Marshall McLuhan