1

我在这方面工作。但是,我仍然有一些问题来实现这一点。这是我的输入[代码]

    <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>

[/代码]

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

<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 代码。

4

2 回答 2

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>
于 2013-08-21T12:36:14.820 回答
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>

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

于 2013-08-21T18:09:12.970 回答