|
Subject: Re: [xsl] targeting the 'first' instance of the same element in variable structures From: "David Birnbaum djbpitt@xxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> Date: Tue, 2 Jul 2024 11:08:37 -0000 |
How about <xsl:template match="(div/descendant::head)[1]"> ?
On Jul 2, 2024, at 7:04b/AM, Jean-Paul Rehr rehrjb@xxxxxxxxx
<xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> wrote:
o;?At first Martin's solution <xsl:template match="(div//head)[1]">
looked like it would work. But then I started to test the various
documents I have to work with, in particular at the most problematic.
Below is an actual fragment, but I've put it in this Fiddle. As we
can see it matched two items...it should only match the first. In
bold below are what the template matched, in red bold what should be
exclusively matched.
<div xml:id="michael-meld-dist-div-5Ehm2la0">
<div xml:id="michael-meld-dist-div-1k784804" type="fulltext">
<div xml:id="michael-meld-dist-div-23IEC0ec" type="prologus">
<head>PREFATIO<note type="source">Indicem analyticum, qui ex vetusta
exemplari Ms. in ceteris editionibus hoc loco legitur, ad calcem
voluminis tomi rejecimus.</note>
</head>
<p xml:id="michael-meld-dist-p-k78i0214">Quisquis ad divine pagine
lectionem erudiendus accedit, in principio considerare debet, que sit
illius Scripture materia, circa quam versatur ejus tractatus. Est
autem illius
principalis materia, opus restaurationis.</p>
<div xml:id="michael-meld-dist-div-02847i24" sameAs="michaelis_0001"
type="distinctio">
<head>Opus conditionis et restaurationis</head>
<p xml:id="michael-meld-dist-p-0M0t4368">Sunt enim duo opera : opus
conditionis, et opus restaurationis. Opus conditionis est, quo
factum est ut essent, que non erant; opus restaurationis est, per
quod meliorata sunt, que
perierant. Opere conditionis factus est mundus cum suis elementis;
opere restaurationis, Verbi incarnatio cum suis sacramentis. </p>
</div>
<div xml:id="michael-meld-dist-div-qA5X66Ks" sameAs="michaelis_0002"
type="distinctio">
<head>Sacre Scripture prestantia</head>
<p xml:id="michael-meld-dist-p-E1v5wA1j">Ex quo manifestum est, quod
Scriptura cunctis aliis precellit, tum materie dignitate, tum
profunditate, et subtilitate. Et si quis diligenter attendit, potest
percipere quod omnes
artes, tam liberales, quam naturales, ei tanquam domine famulantur.
</p>
</div>
</div>
</div>
</div>
On Tue, Jul 2, 2024 at 12:41b/PM Martin Honnen martin.honnen@xxxxxx
<xsl-list-service@lists. mulberrytech.com> wrote:
On 02/07/2024 12:34, Jean-Paul Rehr rehrjb@xxxxxxxxx wrote:
Dear XSL list,
I am trying to target a specific <head> which can appear
nested within a variable number of <div> and possible <list>
elements. In the three examples below I have put in red the
<head> element I want to target with the same XSL template.
In my way of thinking, it is always the first appearance of
<head> no matter how deep or shallow it may be nested. But I
am having trouble conceiving a path that can take into
account the variable depth. Any thoughts about how to target
this?
You can do
<xsl:template match="(div//head)[1]">
in XSLT 3 (if the processor is up to it, I think early Saxon
releases like 9.8 or 9.9 that are no longer supported, didn't
support it, but current releases (11 and 12) certainly do.
fiddle link
XSL-List info and archiveEasyUnsubscribe (by email)
XSL-List info and archiveEasyUnsubscribe (by email)
XSL-List info and archiveEasyUnsubscribe (by email)
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| Re: [xsl] targeting the 'first' ins, Jean-Paul Rehr rehrj | Thread | Re: [xsl] targeting the 'first' ins, Jean-Paul Rehr rehrj |
| Re: [xsl] targeting the 'first' ins, Jean-Paul Rehr rehrj | Date | Re: [xsl] targeting the 'first' ins, Jean-Paul Rehr rehrj |
| Month |