如何在特定的兄弟姐妹之前选择以下兄弟姐妹

时间:2013-08-21 12:25:24

标签: xslt

我为此工作过。但是,我仍然有一些问题要做到这一点。这是我的意见 [代码]

    <contenu1>
    <intertitre niveau="1">1 Construire sans permis : infraction intentionnelle ou purement « matérielle » ?</intertitre>
    <p>Le nouveau code pénal stipule qu’il.<br/></p>
    <p>Le nouveau code pénal stipule qu’il.<br/></p>
    <p>Le nouveau code pénal stipule qu’il.<br/></p>
    <intertitre niveau="1">2 Quelles sont les principales infractions d’urbanisme ?</intertitre>
    <p>La plupart des infractions urbanistiques sont des délits. Pour les délits les plus graves, des peines de dix ans d’emprisonnement peuvent être prononcées.<br/></p>
    <p>La plupart des infractions urbanistiques sont des délits. Pour les délits les plus graves, des peines de dix ans d’emprisonnement peuvent être prononcées.<br/></p>
    <p>La plupart des infractions urbanistiques sont des délits. Pour les délits les plus graves, des peines de dix ans d’emprisonnement peuvent être prononcées.<br/></p>
    <p>La plupart des infractions urbanistiques sont des délits. Pour les délits les plus graves, des peines de dix ans d’emprisonnement peuvent être prononcées.<br/></p>
    <intertitre niveau="1">3 Comment est établie la constatation des infractions ?</intertitre>
    <p>La constatation des infractions aux règles d’urbanisme, figurant sous le livre IV du code de.<br/></p>
    <intertitre niveau="1">4 Quelles mesures urgentes les autorités peuvent-elles actionner avant la saisine du juge ?</intertitre>
    <p>La constatation des infractions aux règles d’urbanisme, figurant sous le livre IV du code.<br/></p>
    </contenu1>

[/代码]

而且,我的预期输出是 [代码]

<d1commdo>
<tit><al>1 Construire sans permis : infraction intentionnelle ou purement « matérielle » ?</al></tit>
<p>Le nouveau code pénal stipule qu’il.<br/></p>
<p>Le nouveau code pénal stipule qu’il.<br/></p>
<p>Le nouveau code pénal stipule qu’il.<br/></p></d1commdo>
<d1commdo>
<tit><al>2 Quelles sont les principales infractions d’urbanisme ?</al></tit>
<p>La plupart des infractions urbanistiques sont des délits. Pour les délits les plus graves, des peines de dix ans d’emprisonnement peuvent être prononcées.<br/></p>
<p>La plupart des infractions urbanistiques sont des délits. Pour les délits les plus graves, des peines de dix ans d’emprisonnement peuvent être prononcées.<br/></p>
<p>La plupart des infractions urbanistiques sont des délits. Pour les délits les plus graves, des peines de dix ans d’emprisonnement peuvent être prononcées.<br/></p>
<p>La plupart des infractions urbanistiques sont des délits. Pour les délits les plus graves, des peines de dix ans d’emprisonnement peuvent être prononcées.<br/></p>
</d1commdo>
<d1commdo>
<tit><al>3 Comment est établie la constatation des infractions ?</al></tit>
<p>La constatation des infractions aux règles d’urbanisme, figurant sous le livre IV du code de.<br/></p></d1commdo>
<d1commdo>
<tit><al>4 Quelles mesures urgentes les autorités peuvent-elles actionner avant la saisine du juge ?</al></tit>
<p>La constatation des infractions aux règles d’urbanisme, figurant sous le livre IV du code.<br/></p>
</d1commdo>

[/代码]

有人可以帮助我在XSLT上实现这一目标吗?我需要xslt代码。

2 个答案:

答案 0 :(得分:2)

这个XSLT:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
  <xsl:output omit-xml-declaration="no" indent="yes"/>
  <xsl:strip-space elements="*"/>

  <xsl:template match="@*|node()">
    <xsl:copy>
      <xsl:apply-templates select="@*|node()"/>
    </xsl:copy>
  </xsl:template>

  <xsl:template match="/*">
    <t>
      <xsl:apply-templates select="intertitre"/>
    </t>
  </xsl:template>

  <xsl:template match="intertitre">
    <d1commdo>
      <tit>
        <a1>
          <xsl:apply-templates/>
        </a1>
      </tit>
      <xsl:apply-templates select="following-sibling::p[1]"/>
    </d1commdo>
  </xsl:template>

</xsl:stylesheet>

...,当应用于源XML时,会产生预期的输出(包含在顶层元素中以形成格式):

<?xml version="1.0" encoding="UTF-8"?>
<t>
  <d1commdo>
    <tit>
      <al>1 Construire sans permis : infraction intentionnelle ou purement « matérielle » ?</al>
    </tit>
    <p>Le nouveau code pénal stipule qu’il.<br/>
    </p>
  </d1commdo>
  <d1commdo>
    <tit>
      <al>2 Quelles sont les principales infractions d’urbanisme ?</al>
    </tit>
    <p>La plupart des infractions urbanistiques sont des délits. Pour les délits les plus graves, des peines de dix ans d’emprisonnement peuvent être prononcées.<br/>
    </p>
  </d1commdo>
  <d1commdo>
    <tit>
      <al>3 Comment est établie la constatation des infractions ?</al>
    </tit>
    <p>La constatation des infractions aux règles d’urbanisme, figurant sous le livre IV du code de.<br/>
    </p>
  </d1commdo>
  <d1commdo>
    <tit>
      <al>4 Quelles mesures urgentes les autorités peuvent-elles actionner avant la saisine du juge ?</al>
    </tit>
    <p>La constatation des infractions aux règles d’urbanisme, figurant sous le livre IV du code.<br/>
    </p>
  </d1commdo>
</t>

答案 1 :(得分:1)

好的,对于你的新要求,解决方案并非无足轻重,但在这里你有了它

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
  <xsl:output omit-xml-declaration="no" indent="yes"/>
  <xsl:strip-space elements="*"/>

  <xsl:template match="@*|node()">
    <xsl:copy>
      <xsl:apply-templates select="@*|node()"/>
    </xsl:copy>
  </xsl:template>

  <xsl:template match="/*">
    <t>
      <xsl:apply-templates select="intertitre"/>
    </t>
  </xsl:template>

  <xsl:template match="intertitre">
    <xsl:variable name="nextIntertitrePosition" 
      select="count(following-sibling::intertitre[1]/preceding-sibling::*)"/>
    <d1commdo">
      <tit>
        <a1>
          <xsl:apply-templates/>
        </a1>
      </tit>
      <xsl:apply-templates select="following-sibling::p[
        count(preceding-sibling::*) &lt; $nextIntertitrePosition 
        or 0 = $nextIntertitrePosition]"/>
    </d1commdo>
  </xsl:template>

</xsl:stylesheet>

编辑:完成了一些格式化并删除了一些小错误