Я пытаюсь написать XSLT, который организует HTML-файл на разные уровни раздела в зависимости от уровня заголовка. Вот мой вклад:
<html>
<head>
<title></title>
</head>
<body>
<h1>HEADER 1 CONTENT</h1>
<p>Level 1 para</p>
<p>Level 1 para</p>
<p>Level 1 para</p>
<p>Level 1 para</p>
<h2>Header 2 CONTENT</h2>
<p>Level 2 para</p>
<p>Level 2 para</p>
<p>Level 2 para</p>
<p>Level 2 para</p>
</body>
</html>
В данный момент я работаю с довольно простой структурой, поэтому этот шаблон будет постоянным на данный момент. Мне нужен вывод, как это ...
<document>
<section level="1">
<header1>Header 1 CONTENT</header1>
<p>Level 1 para</p>
<p>Level 1 para</p>
<p>Level 1 para</p>
<p>Level 1 para</p>
<section level="2">
<header2>Header 2 CONTENT</header2>
<p>Level 2 para</p>
<p>Level 2 para</p>
<p>Level 2 para</p>
<p>Level 2 para</p>
</section>
</section>
</document>
Я работал с этим примером: Ответ Stackoverflow
Однако я не могу заставить его делать именно то, что мне нужно.
Я использую Saxon 9 для запуска xslt в Oxygen для dev. Я буду использовать файл cmd / bat в производстве. Все еще Saxon 9. Я хотел бы обрабатывать до 4 уровней вложенных секций, если это возможно.
Любая помощь очень ценится!
Мне нужно добавить это, поскольку я столкнулся с другим условием. Я, наверное, должен был подумать об этом раньше.
Я сталкиваюсь со следующим примером кода
<html>
<head>
<title></title>
</head>
<body>
<p>Level 1 para</p>
<p>Level 1 para</p>
<p>Level 1 para</p>
<p>Level 1 para</p>
<h1>Header 2 CONTENT</h1>
<p>Level 2 para</p>
<p>Level 2 para</p>
<p>Level 2 para</p>
<p>Level 2 para</p>
</body>
</html>
Как видите, <p>
является дочерним элементом <body>
, тогда как в моем первом фрагменте <p>
всегда был дочерним элементом уровня заголовка. Мой желаемый результат тот же, что и выше, за исключением того, что когда я сталкиваюсь с <p>
как ребенок с <body>
, он должен быть заключен в <section level="1">
.
<document>
<section level="1">
<p>Level 1 para</p>
<p>Level 1 para</p>
<p>Level 1 para</p>
<p>Level 1 para</p>
</section>
<section level="1">
<header1>Header 2 CONTENT</header1>
<p>Level 2 para</p>
<p>Level 2 para</p>
<p>Level 2 para</p>
<p>Level 2 para</p>
</section>
</document>