- From: James Fuller <jim@webcomposite.com>
- Date: Sat, 5 Mar 2016 06:26:03 +0100
- To: Alex Miłowski <alex@milowski.com>
- Cc: XProc WG <public-xml-processing-model-wg@w3.org>
I was a little unsure of just what has been decided ... does this fit
your current assumptions?
-------------------
xproc version = "2.0";
inputs: $source as document-node()
outputs: $result as document-node()
declare option p:exclude-inline-prefixes="my c p"
declare option language
declare option match
declare option attr
declare flow my:dyer
inputs: $source as document-node()
outputs: $result as document-node()
($langage as xs:string,
$match as xs:string,
$attr as xs:string
){
$source → replace($match) {
projection(template("/*/@{($attr)}")) ≫ $ca
{ if($lex($ca))
then xquery(template("attribute {($attr)} {( $lex($ca) )}")
else $ca }
} ≫ $result
}
p:load(href="{$language}.json",override-content-type="application/json")?colourMap
≫ $lexmap
$source →
my:dyer(match=$match,lex=$lexmap,attr=$attr) ≫ $result
On 5 March 2016 at 01:16, Alex Miłowski <alex@milowski.com> wrote:
> As Henry pointed out in the original proposal, you can't have the same
> name (or syntax in this case) for the defaulted input and output port
> of a block expression. There is little difference between:
>
> { [] → magic() → [] }
>
> and
>
> { $1 → magic() → $1 }
>
> and we decided the latter was not desirable.
>
> On Thu, Mar 3, 2016 at 8:16 AM, James Fuller <jim@webcomposite.com> wrote:
>> redraft based on Alex suggestions (though I kept [] cause I do not
>> think we are required to explicitly name)
>>
>> --------------
>>
>> xproc version = "2.0";
>>
>> inputs: $source as document-node()
>> outputs: $result as document-node()
>>
>> declare option p:exclude-inline-prefixes="my c p"
>>
>> declare option language
>> declare option match
>> declare option attr
>>
>> declare flow my:dyer
>> inputs: $source as document-node()
>> outputs: $result as document-node()
>> ($langage as xs:string,
>> $match as xs:string,
>> $attr as xs:string
>> ){
>> $source → replace($match) {
>> [] → projection(template("/*/@{($attr)}")) ≫ $ca
>> [] → { if($lex($ca))
>> then xquery(template("attribute {($attr)} {( $lex($ca) )}")
>> else $ca } ≫ []
>> } ≫ $result
>> }
>>
>> p:load(href="{$language}.json",override-content-type="application/json")?colourMap
>> ≫ $lexmap
>>
>> $source →
>> my:dyer(match=$match,lex=$lexmap,attr=$attr) ≫ $result
>>
>>
>>
>> On 3 March 2016 at 17:04, Alex Miłowski <alex@milowski.com> wrote:
>>> I think we'll still want to have defined names for the replace
>>> operation and probably want to treat it as a specialized step
>>> invocation. Within the block expression for the replace, we'd have a
>>> default name for the input and output ports.
>>>
>>> Also, I wouldn't conflate data literals and projections.
>>>
>>> $source → replace($match) {
>>> $source → projection(template("/*/@{($attr)}")) ≫ $ca,
>>> $source → { if($lex($ca))
>>> then xquery(template("attribute {($attr)} {( $lex($ca) )}",
>>> ... need variable mappings ...)
>>> else $ca } ≫ $result
>>> } ≫ $result
>>> }
>>>
>>> Not sure about using xquery to construct an attribute node ...
>>>
>>> You can see how the choice of a common input port name can be
>>> confusing. $source is in a new scope within the block expression and
>>> is bound to the item matched by replace.
>>>
>>>
>>> On Thu, Mar 3, 2016 at 5:34 AM, James Fuller <jim@webcomposite.com> wrote:
>>>> At yesterday's team meeting, Henry presented his work
>>>>
>>>> https://github.com/xproc/notes/tree/master/design
>>>>
>>>> where he has authored non trivial xproc v1 and xproc v2 pipeline with
>>>> the xml syntax to discover API semantics, which he has started to
>>>> collect thoughts below:
>>>>
>>>> https://rawgit.com/xproc/notes/master/design/xmpl.html
>>>>
>>>> These examples are an excellent 'proving ground' for the new flow
>>>> syntax and I have attached below.
>>>>
>>>> As we are still discussing specifics of syntax and fleshing out how
>>>> expressions may fit into the language I have taken some liberties and
>>>> there are some glaring omissions.
>>>>
>>>> The flow syntax is easier to read and easier to follow 'flow' but we
>>>> still have a bit of work to make things explicit. If we can get build
>>>> up a corpus of such examples, they will serve us well as a guide for
>>>> when we start speccing.
>>>>
>>>> J
>>>>
>>>> ---------------
>>>>
>>>> xproc version = "2.0";
>>>>
>>>> inputs: $source as document-node()
>>>> outputs: $result as document-node()
>>>>
>>>> declare option output:exclude-inline-prefixes="my c p"
>>>>
>>>> declare %required option language
>>>> declare %required option match
>>>> declare %required option attr
>>>>
>>>> declare flow my:dyer
>>>> inputs: $source as document-node()
>>>> outputs: $result as document-node()
>>>> ($langage as xs:string,
>>>> $match as xs:string,
>>>> $attr as xs:string
>>>> ){
>>>> $source → replace $match {
>>>> [] → data xml `/*/@{$attr}` ≫ $ca,
>>>> [] → { if($lex($ca))
>>>> then data xml `attribute $attr{ $lex($ca) }`
>>>> else . } ≫ []
>>>> } ≫ $result
>>>> }
>>>>
>>>> p:load(href="{$language}.json",
>>>> override-content-type="application/json")?colourMap ≫ $lexmap
>>>>
>>>> $source →
>>>> my:dyer(match={$match},lex={$lexmap},attr={$attr}) ≫ $result
>>>>
>>>
>>>
>>>
>>> --
>>> --Alex Miłowski
>>> "The excellence of grammar as a guide is proportional to the paucity of the
>>> inflexions, i.e. to the degree of analysis effected by the language
>>> considered."
>>>
>>> Bertrand Russell in a footnote of Principles of Mathematics
>>>
>
>
>
> --
> --Alex Miłowski
> "The excellence of grammar as a guide is proportional to the paucity of the
> inflexions, i.e. to the degree of analysis effected by the language
> considered."
>
> Bertrand Russell in a footnote of Principles of Mathematics
>
Received on Saturday, 5 March 2016 05:26:34 UTC