我需要将一个巨大的XML 文档转换为多个 HTML 文档。XML如下:
<society>
<party_members>
<member id="1" first_name="" last_name="O'Brien">
<ministry_id>1</ministry_id>
<ministry_id>3</ministry_id>
</member>
<member id="2" first_name="Julia" last_name="">
<ministry_id>2</ministry_id>
</member>
<member id="3" first_name="Winston" last_name="Smith">
<ministry_id>1</ministry_id>
</member>
</party_members>
<ministries>
<ministry>
<id>1</id>
<short_title>Minitrue</short_title>
<long_title>Ministry of truth</long_title>
<concerns>News, entertainment,education and arts </concerns>
</ministry>
<ministry>
<id>2</id>
<short_title>Minipax</short_title>
<long_title>Ministry of Peace</long_title>
<concerns>War</concerns>
</ministry>
<ministry>
<id>3</id>
<short_title>Minilove</short_title>
<long_title>Ministry of Love</long_title>
<concerns>Dissidents</concerns>
</ministry>
</ministries>
</society>
潜在的党员人数可能非常多——数百万,而部委的数量很少,大约 300-400 个。对于每个党员,应该有一个包含以下内容的输出 HTML:
<html>
<body>
<h2>Party member: Winston Smith</h2>
<h3>Works in:</h3>
<div class="ministry">
<h4>Ministry of truth</h4> - Minitrue
<h5>Ministry of truth <i>concerns</i> itself with <i>News, entertainment,education and arts</i></h5>
</div>
</body>
</html>
输出文件的数量应该==党员的数量。
我现在正在努力使用 XSLT,但无法让它工作。
请帮助我确定 XSLT 是否是这项工作的好工具,如果是,请提示我如何实现它,应该使用哪些 XSLT 构造等。
当然,我可以简单地用程序语言编写小型转换,但我正在寻找一种“应用转换模板”的方法,而不是程序解析和修改,以便能够将模板交给其他用户进行进一步修改(CSS、格式ETC)。
我正在使用 ruby + nokogiri(这是一组与 libxslt 的绑定),但可以使用任何语言。
如果 XSTL 不适合这项任务,那么在这里可以使用哪些其他工具,前提是我必须在几分钟内转换约 1M 的用户,并且内存消耗很少?
额外的好处是能够并行处理。
谢谢你。