假设我有一些想要转换为 HTML 的 XML。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 来执行这种类型的分组魔术?
任何帮助都会很棒。谢谢!