Hi Andy,

Those look like very useful links; thank you!

Absolutely not going to argue it's BaseX's job in particular to have a
considered-as-lines consistency default, but keep running into situations
where one is needed.

thanks!
Graydon


On Sat, Feb 24, 2024 at 8:30 AM Andy Bunce <bunce.a...@gmail.com> wrote:

> Hi Graydon,
>
> >I'm trying to regularize the formatting of some XSLT files
>
> I don't think this can or should be done with BaseX serialization. I would
> use a dedicated formater/ pretty printer.
> For me the sign of a good formatter  is that it tidies random indentation
> while preserving what looks intentional.
>
> Phil Fearon has done a lot of great work on formatting XML/XSLT [1]. I use
> his Deltaxml Vscode extension [2]
> Works for me [3]
> If Vscode is not a route you want to take, maybe the older standalone
> xmlspectrum [4] would also work (untested).
>
> /Andy
>
> [1] https://github.com/pgfearo
> [2]
> https://marketplace.visualstudio.com/items?itemName=deltaxml.xslt-xpath
> [3] https://imgur.com/a/E0388Si
> [3] https://github.com/pgfearo/xmlspectrum
>
>
>
> On Fri, 23 Feb 2024 at 23:37, <gerrit.imsi...@le-tex.de> wrote:
>
>> Hi Graydon,
>>
>> This might not be a serialization but a parsing problem  The XML parser
>> performs attribute value normalization as per
>> https://www.w3.org/TR/xml/#AVNormalize
>>
>> I have often wished that there were a parser option to preserve newlines
>> in attribute values, in particular for keeping the indentation of multiline
>> XPath expressions in XProc or XSLT in a future XProc 1.0 → 3.0 migration
>> tool.
>>
>> For such a migration, the XPath expressions may need modifications, too,
>> so I thought they need to be parsed and transformed anyway, and then they
>> can be re-serialized with indentation (I haven't tried b/c I'm  writing
>> this on the phone, but I strongly believe I can have newlines serialized in
>> attribute values).
>>
>> But in your case a parser option would be useful.
>>
>> An alternative could  be to apply some text preprocessing to the
>> document. For example, read it with unparsed-text, use analyze-string to
>> match attribute values (difficult even in moderately complex cases),
>> replace each newline with a PUA character and serialize this character as
>> newline using a character map later on.
>>
>> Gerrit
>>
>> Sent from MailDroid <https://goo.gl/ODgwBb>
>>
>> -----Original Message-----
>> From: Graydon Saunders <graydon...@gmail.com>
>> To: BaseX <BaseX-Talk@mailman.uni-konstanz.de>
>> Sent: Fri, 23 Feb 2024 22:50
>> Subject: [basex-talk] file:write, formatting, and maps in select
>> attributes
>>
>> Hello --
>>
>> I'm trying to regularize the formatting of some XSLT files by loading
>> them (via doc()) and writing them back out via file:write()
>>
>> I know about the *indent* and *indent-attributes* serialization
>> parameters, and mostly they're doing what I want.
>>
>> What I'd like is to preserve a one-line-per-entry format for a map in a
>> select attribute. For example, I'd like to keep
>>
>> <xsl:variable as="map(xs:integer,xs:string)" name="hexNum" select="
>>       map {
>>         1: '0',
>>         2: '1',
>>         3: '2',
>>         4: '3',
>>         5: '4',
>>         6: '5',
>>         7: '6',
>>         8: '7',
>>         9: '8',
>>         10: '9',
>>         11: 'a',
>>         12: 'b',
>>         13: 'c',
>>         14: 'd',
>>         15: 'e',
>>         16: 'f'
>>       }" static="yes" />
>>
>> instead of
>>
>> <xsl:variable as="map(xs:integer,xs:string)"
>>                 name="hexNum"
>>                 select="       map {         1: '0',         2: '1',
>>     3: '2',         4: '3',         5: '4',         6: '5',         7: '6',
>>         8: '7',         9: '8',         10: '9',         11: 'a',
>> 12: 'b',         13: 'c',         14: 'd',         15: 'e',         16: 'f'
>>       }"
>>                 static="yes"/>
>>
>> I don't think there's a way to do this with the serialization parameters,
>> but is there a way to do this?
>>
>> Thanks!
>> Graydon
>>
>> --
>> Graydon Saunders  | graydon...@fastmail.com
>> Þæs oferéode, ðisses swá mæg.
>> -- Deor  ("That passed, so may this.")
>>
>

Reply via email to