在同一级别上分组元素

时间:2012-09-14 14:47:28

标签: xml xslt

我的转换存在问题并且希望有一些想法,我正在处理一个非常平坦的输入文档,其中所有重要节点都是彼此的兄弟。

看起来像这样:

<title1> Rule 51 </title1>
<p> text here </p>
<p> text here </p>
<note> Source </note>
<p> text here </p>
<title1> Rule 52 </title1>
<p> text here </p>
<p> text here </p>
<note> Source </note>
<p> text here </p>

我的目标是让这个输入看起来像这样:

  <section>
       <title1> Rule 51 </title1>
       <p> text here </p>
       <p> text here </p>
       <note> Source </note>
           <p> text here </p>
   </section>

   <section>
       <title1> Rule 52 </title1>
       <p> text here </p>
       <p> text here </p>
       <p> text here </p>
       <p> text here </p>
       <note> Source </note>
           <p> text here </p>
   </section>

正如你在上面看到的,我的主要目标是将每个title1和所有这些都跟随兄弟姐妹分组,直到它将另一个title1命中为section元素。任何想法??

提前致谢。

1 个答案:

答案 0 :(得分:2)

尝试

<!-- Change the match pattern to match the parent of the input you showed. -->
<xsl:template match="blockquote">
  <xsl:for-each-group group-starting-with="h:h4" select="*">
    <section>
      <xsl:copy-of select="current-group()" />

在XSLT 2.0中。

如果您只能使用XSLT 1.0,请查看Muenchian Grouping,如果需要帮助,请查看。