Скажем, у меня был какой-то XML, который я хотел преобразовать в HTML. XML разделен на упорядоченные разделы:
<?xml version="1.0" encoding="utf-8"?>
<root>
<section attr="someCriteria">
<h1>Title 1</h1>
<p>paragraph 1-1</p>
<p>paragraph 1-2</p>
</section>
<section attr="someOtherCriteria">
<h3>Subtitle 2</h3>
<ul>
<li>list item 2-1</li>
<li>list item 2-2</li>
<li>list item 2-3</li>
<li>list item 2-4</li>
</ul>
</section>
<section attr="anotherSetOfCriteria">
<warning>
Warning: This product could kill you
</warning>
</section>
<section attr="evenMoreCriteria">
<disclaimer>
You were warned
</disclaimer>
</section>
<section attr="criteriaSupreme">
<p>Copyright 1999-2011</p>
</section>
</root>
У меня есть несколько таких XML-документов.
Мне нужно сгруппировать и преобразовать эти разделы на основе критериев. Там будет два разных вида ведер.
- Итак, первый раздел пойдет в
ведро (например,
<div
class="FormatOne"></div>
)
- Если
второй раздел соответствует критериям
претендовать на ведро "FormatOne" это
также войдет в это ведро
- Если
третий раздел требует другого
ведро (например,
<div
class="FormatTwo"></div>
), затем новый
ведро создано и раздел
содержимое помещено в это ведро
- Если корзина для четвертого раздела требует «FormatOne» (который отличается от предыдущего формата), тогда новый
ведро создается снова и раздел
содержимое помещено в это ведро
- и т.д.. Каждый раздел будет идти в том же сегменте, что и предыдущий раздел, если они имеют одинаковый формат. Если нет, то создается новое ведро.
Таким образом, для каждого документа, в зависимости от логики разделения сегментов, документ может выглядеть так:
<body>
<div class="FormatOne">
<h1>Title 1</h1>
<p>paragraph 1-1</p>
<p>paragraph 1-2</p>
<h3>Subtitle 2</h3>
<ul>
<li>list item 2-1</li>
<li>list item 2-2</li>
<li>list item 2-3</li>
<li>list item 2-4</li>
</ul>
</div>
<div class="FormatTwo">
<span class="warningText">
Warning: This product could kill you
</span>
</div>
<div class="FormatOne">
<span class="disclaimerText"> You were warned</span>
<p class="copyright">Copyright 1999-2011</p>
</div>
</body>
это:
<body>
<div class="FormatOne">
<h1>Title 1</h1>
<p>paragraph 1-1</p>
<p>paragraph 1-2</p>
<h3>Subtitle 2</h3>
</div>
<div class="FormatTwo">
<ul>
<li>list item 2-1</li>
<li>list item 2-2</li>
<li>list item 2-3</li>
<li>list item 2-4</li>
</ul>
</div>
<div class="FormatOne">
<span class="warningText">
Warning: This product could kill you
</span>
<span class="disclaimerText"> You were warned</span>
<p class="copyright">Copyright 1999-2011</p>
</div>
</body>
или даже это:
<body>
<div class="FormatOne">
<h1>Title 1</h1>
<p>paragraph 1-1</p>
<p>paragraph 1-2</p>
<h3>Subtitle 2</h3>
<ul>
<li>list item 2-1</li>
<li>list item 2-2</li>
<li>list item 2-3</li>
<li>list item 2-4</li>
</ul>
<span class="warningText">
Warning: This product could kill you
</span>
<span class="disclaimerText"> You were warned</span>
<p class="copyright">Copyright 1999-2011</p>
</div>
</body>
в зависимости от того, как определены разделы.
Есть ли способ использовать XSLT для выполнения этого типа магии группировки?
Любая помощь будет отличной.
Спасибо!