これは元の質問とは異なることは知っていますが、以下の望ましい結果を達成するために私が考えていた思考プロセスでした。
XML入力:
<section hangIndent="no" indent="arabic 1 digit"
isProposedAmendment="no" label="2A">
<title>AAA</title>
<body>
BBB<subSection label="1">
<body>
<para hangIndent="yes" indent="loweralpha 1 character"
isProposedAmendment="no" label="a">
<body>
CCC
</body>
</para>
<para hangIndent="yes" indent="loweralpha 1 character"
isProposedAmendment="no" label="b">
<body>
DDD
</body>
</para>
<para hangIndent="yes" indent="loweralpha 1 character"
isProposedAmendment="no" label="c">
<body>
EEE
</body>
</para>
</body>
</subSection>
</body>
<annotation isProposedAmendment="no">
FFFFF
</annotation>
</section>
目的の出力:各ノードのラベルに基づいてxmlpath名を作成し、各エンドポイントに挿入します。
<nm:xmlpath name ="2A" />
<section hangIndent="no" indent="arabic 1 digit"
isProposedAmendment="no" label="2A">
<title>AAA</title>
<body>
BBB
<nm:xmlpath name ="2A 1" />
<subSection label="1">
<body>
<nm:xmlpath name ="2A 1(a)" />
<para hangIndent="yes" indent="loweralpha 1 character"
isProposedAmendment="no" label="a">
<body>
CCC
</body>
</para>
<nm:xmlpath name ="2A 1(b)" />
<para hangIndent="yes" indent="loweralpha 1 character"
isProposedAmendment="no" label="b">
<body>
DDD
</body>
</para>
<nm:xmlpath name ="2A 1(c)" />
<para hangIndent="yes" indent="loweralpha 1 character"
isProposedAmendment="no" label="c">
<body>
EEE
</body>
</para>
</body>
</subSection>
</body>
<annotation isProposedAmendment="no">
FFFFF
</annotation>
</section>