Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过XSL简单地取消格式化HTML文件_Html_Xml_Xslt_Tei - Fatal编程技术网

通过XSL简单地取消格式化HTML文件

通过XSL简单地取消格式化HTML文件,html,xml,xslt,tei,Html,Xml,Xslt,Tei,我四处寻找通过XSL取消平台的过程,但没有一个真正适合我,尽管我相信我的情况非常简单。我有一个HTML的集合,总是相同的结构,我想通过XSL转换来解冻。基本上,它是关于将元素封装在之后的所有元素,直到下一个

我四处寻找通过XSL取消平台的过程,但没有一个真正适合我,尽管我相信我的情况非常简单。我有一个HTML的集合,总是相同的结构,我想通过XSL转换来解冻。基本上,它是关于将
元素封装在

之后的所有元素,直到下一个

[…页面上的一些内容]

一些文本

副标题1

第一部分的第一段,包括一些内部内容和其他内容 嵌套元素,在多个级别上

    内部带有
  • 的列表

    第一部分第二段

    第一部分第三段

    副标题2

    第二部分第一段

    第二部分第二段

    副标题3 [等等……]

我想把这变成:

<div n='section1'>
    <head>Subtitle 1</head>
    <p>First paragraph of part 1, with some <span>Inside</span> and other and other 
     nested elements, on multiple levels</p>
    <ul>a list with <li> inside</ul>
    <p>Second paragraph of part 1</p>
    <picture source='xyz.jpg'/>
    <p>Third paragraph of part 1</p>
</div>
<div n="section2">
    <head>Subtitle 2</head>
    <p>First paragraph of part 2</p>
    <p>Second paragraph of part 2</p>
</div>
<div n="Section 3">
    <head>Subtitle 3</head>
    [and so on…]

副标题1
第1部分第一段,包含一些内部和其他
嵌套元素,在多个级别上

    内部带有
  • 的列表 第一部分第二段

    第一部分第三段

    副标题2 第二部分第一段

    第二部分第二段

    副标题3 [等等……]
我找不到解决这个问题的办法。此外,如果第一步只是取消HTML文件的框架(严格复制div中的元素而不进行转换),那么这已经很了不起了


提前谢谢

这是一个典型的位置分组问题。要开始,请执行以下操作:

<xsl:template match="body">
  <body>
    <xsl:for-each-group select="*" group-starting-with="p[@class='subtitle']">
      <xsl:choose>
        <xsl:when test="@class="subtitle">
          <div n="section{position()}">
            <head>{.}</head>
            <xsl:apply-templates select="tail(current-group())"/>
          </div>
        </xsl:when>
        <xsl:otherwise>
           <xsl:apply-templates select="current-group()"/>
        </xsl:otherwise>
      </xsl:choose>
    </xsl:for-each-group>
  </body>
</xsl:template>


您的处理器是否支持XSLT 2.0?是的,它支持XSLT 2.0–由于下面的答案,我们刚刚发现了分组的可能性!非常感谢–我被XSLT1.0困住了。