- From: Piez, Wendell A. (Fed) <wendell.piez@nist.gov>
- Date: Thu, 6 Feb 2025 14:43:14 +0000
- To: XProc Dev <xproc-dev@w3.org>
Hi David, A difference worth considering is that p:add-attributes/@attribute-value is a string (literal), while p:label-elements/@label is an XPath expression to be evaluated in context. If your value needs to be calculated in its local scope, that is, you need p:label-elements. If XProc functions, variables etc. are enough, you can use p:add-attribute with AVT syntax { }. This is essentially why you had to use p:viewport around your p:add-attribute, to give you access to the document context - using p:label-elements you can simply match what you need to match. If you dig around in my tutorial repo you'll find some p:label-elements, in some places as a workaround since I didn't know of the existence of p:make-absolute-uris. Cheers, Wendell -----Original Message----- From: Martin Honnen <martin.honnen@gmx.de> Sent: Wednesday, February 5, 2025 5:40 PM To: xproc-dev@w3.org Subject: Re: p:label-elements vs p:add-attribute On 05/02/2025 23:01, David Birnbaum wrote: > Dear XProc-dev, > > I'm still learning my way around XProc, and to add unique identifier > attributes to specific elements in a document within a pipeline I used > <p:viewport> to match the elements I cared about and <p:add-attribute> > (using p:iteration-position()) to create and add the unique > identifiers. I was pleased with the result until I stumbled today over > <p:label-elements>, which I hadn't noticed / known about earlier, I > see that <p:label-elements> has a "replace" option that > <p:add-attribute> lacks, but otherwise it looks as if the two methods > can be used for the same purpose. > > Are there situations (other than where I need to control whether to > replace an existing value) where one method should be preferred over > the other? That is, what types of use-cases motivated the decision to > make both methods available in the language? Thanks for any guidance! > Perhaps one advantage that p:label-elements gives you is that positional index variable "An additional variable $p:index is available that holds the index (sequence number) of the match" exposed in the "label" expression.
Received on Thursday, 6 February 2025 14:43:20 UTC