В некотором упрощении мой XML выглядит так:
<?xml version="1.0" encoding="UTF-8"?>
<dict>
<entry>
<form>word</form>
<gram>noun</gram>
<span style="bold">1.</span>
<def>this is a definition in the first sense.</def> – <cit type="example">
<quote>This is a <span style="bold">quote</span> for the first sense. </quote>
</cit>
<span style="bold">2.</span>
<def>This is a definition for the second sense</def> – <cit type="example">
<quote>This is a quote for the second sense.</quote>
</cit>
</entry>
</dict>
Мне нужно преобразовать это с помощью XSLT 2.0 или 3.0, чтобы получить следующее:
<?xml version="1.0" encoding="UTF-8"?>
<dict>
<entry>
<form>word</form>
<gram>noun</gram>
<sense n="1">
<def>this is a definition in the first sense.</def> – <cit type="example">
<quote>This is a <span style="bold">quote</span> for the first sense. </quote>
</cit>
</sense>
<sense n="2">
<def>This is a definition for the second sense</def> – <cit type="example">
<quote>This is a quote for the second sense.</quote>
</cit>
</sense>
</entry>
</dict>
Может быть более двух значений, и жирный шрифт span может встречаться где угодно, поэтому для этого нам нужно конкретно указать что-то вроде tei:span[@style='bold'][matches(text(), '^\d\.')]
.
Мне сложно собрать это вместе в таблице стилей, которая также извлекает номер для текстового узла диапазона и использует его в качестве значения атрибута нового элемента <sense>
.
Буду очень признателен за советы. X
sense
)? Спасибо! - person Tim C   schedule 10.02.2017