XSLT分为多个HTML文件

时间:2016-03-24 16:39:18

标签: html xml xslt split

我是XSLT的初学者,我想根据XML文件中的特定属性将XML文件拆分为多个HTML文件。

以下是我的XML文件示例:

<article>
<div>
<paragraph>text text text</paragraph>
</div>
<div class="zoologie">
<def>this is a definition</def>
<def>this is another definition</def>
<example>this is a first example</example>
<example>this is a second example</example>
</div>
</article>

<article>
<div>
<paragraph>text text text</paragraph>
</div>
<div class="médecine">
<def>this is a definition</def>
<def>this is another definition</def>
<example>this is a first example</example>
<example>this is a second example</example>
</div>
</article>

<article>
<div>
<paragraph>text text text</paragraph>
</div>
<div class="zoologie">
<def>this is a definition</def>
<def>this is another definition</def>
<example>this is a first example</example>
<example>this is a second example</example>
</div>
</article>

我想要获得的是一个HTML文件,该文件分组包含具有相同属性类的所有文章。例如,一个名为zoologie.html的HTML文件收集包含属性class =“zoologie”的所有文章。另一个名为médecine.html的HTML文件收集了属性为class =“médecine”的所有文章。我已尝试过拆分功能,但它不起作用。如果你能帮助我,我将不胜感激。 谢谢, FLO

1 个答案:

答案 0 :(得分:0)

这是一个经典的XSLT 2.0构造:

<xsl:for-each-group select="article" group-by="div/@class">
  <xsl:result-document href="{current-grouping-key()}.xml">
    <articles>
      <xsl:copy-of select="current-group()"/>
    </articles>
  </xsl:result-document>
</xsl:for-each-group>

XSLT 1.0没有任何内置功能可以进行分组或生成多个输出文件,但某些1.0处理器可能有供应商扩展,可以提供帮助。