- From: Erik Bruchez <ebruchez@orbeon.com>
- Date: Tue, 28 Aug 2018 13:30:11 -0700
- To: mixich.andreas@gmail.com
- Cc: XForms <public-xformsusers@w3.org>
- Message-ID: <CAAc0PEWNZSB4prsEN2J95vJ1dXLjLYhxjkRKP3V7JQ-sZHmoGA@mail.gmail.com>
All, As Steven said we'll discuss this during an upcoming all, but a few thoughts: - I see some benefits of using a `map()`: there is only one function to add, and the result can easily scale to adding more values. - Even when using XPath 2.0, a subset of the `map:` functions can be supported and XForms could mandate that. We do this in our implementation, without supporting the native literal syntax for maps. - I am less of a fan of using a result XML document. What we have here is a name/value mapping, and using XML for that is pretty heavy. It would work, of course. - There are also drawbacks of using maps. Specifically, they are entirely untyped. If you make a typo in a key name, your XPath processor/compiler can catch that. If you write: map:get($map, 'foo') and `foo` is not a member of the map, you are out of luck if it returns an empty sequence. While: get-foo($uri) will catch the attention of the XPath processor. The same goes for accessing an XML document with the URI parts. Your XPath `/*/foo` will not be checked. I realize that this is the norm with XPath. -Erik On Tue, Aug 28, 2018 at 1:17 PM Andreas Mixich <mixich.andreas@gmail.com> wrote: > On Tue, Aug 28, 2018 at 2:22 PM Steven Pemberton <steven.pemberton@cwi.nl> > wrote: > >> Hi gang, >> >> Yesterday I received a mail from someone enquiring about the URI >> Functions. >> > > That was me. My message to the list, which I have written in the late > morning, got > caught by the list-processor, awaiting permission to archive and thus post > the mail to > the list. That's why we now have two threads regarding this topic. I am > sorry, but I just > saw the confirm message in the evening. Just disregard the other thread, > though > Liam has come up with some remarks in reply to it. > > >> Since we already have a parse() function, >> >> > [...] > > A call like >> >> parse-IRI(" >> https://username:password@example.org:8080/pages/order?id=42&n1=v11#content >> ") >> >> could produce one of the following document nodes: >> >> > I like the idea. Though, I still think, a single IRI function, that > componentizes an IRI should go into any > future XPath spec. But as I have laid out in my other message to this > list, that may take a long time, > if ever, and so this seems a very viable approach. > > I like the combination of the first proposal with the third one (for the > query part) the most, since every > component gets its logical counterpart by way of an element. If you put > 'username:password' together, > that's one additional step the user of such a function would need to do. > Also, if named 'IRI' we must > understand, that URNs belong into this group as well, but are disjoint > with URLs. The URN RFC has > seen a quite extensive update in 2017 by means of RFC 8141 ( > https://tools.ietf.org/html/rfc8141) > > <iri> > <scheme>https</scheme> <!-- is always 'urn' for URN --> > <path>/pages/order</path> <!-- could be mapped to NSS --> > <query name="id">42</query> <!-- seems mappable to q-component --> > <query name="n1">v11</query> > <fragmet>content</fragmet> <!-- mappable to f-component --> > <user>user</user> <!-- no special equivalence for URN --> > <password>password</password> <!-- no special equivalence for URN --> > <host>example.org</host> <!-- disjoint with URN --> > <port>8080</port> <!-- disjoint with URN --> > <filename>index.html</filename> <!-- no special equivalence for URN --> > <!-- URN components follow --> > <nid>example</nid> <!-- the 'authority' component for URN > --> > <nss>some-specific-string</nss> <!-- the 'path' component for URN --> > <r-component>c901</r-component> <!-- R esource Component --> > <q-component>sample</q-component> <!-- Q uery Component --> > <f-component>id11.1</f-component> <!-- F ragment Component --> > <is-urn>true|false</is-urn> <!-- some sugar, could be an attribute > --> > <!-- (@type="url|urn")to > document-node, --> > <!-- if both IRI types could be merged > --> > </iri> > > There is some overlap for 'query/q-component', 'fragment/f-component' and > 'nid', which designates the 'authority' but is very different from the URL. > 'nss' could be compared to 'path' + 'filename'. Since URN and URL are > disjoint > I think, it may be wisest, to keep the element names separate, since it > won't > be possible, to join them. 'authority', according to RFC 3986, consists of > 'user:password@host:port' while for an NID it is a single string-value. > > -- > Minden jót, all the best, Alles Gute, > Andreas Mixich >
Received on Tuesday, 28 August 2018 20:30:45 UTC