如何使用 XSLT 将嵌套部分 DOCX 文件转换为 XML

How can convert the nested section DOCX file in to the XML using - XSLT

如何将 DOCX 部分样式(例如 Titre-niv1Titre-niv2Titre-niv3)和(例如 Paragraphesimple 样式转换为 Paragraphenum-Titrenoy)转换为XML 嵌套部分和段落 XML.
输入

    <root xmlns:w="www.ap">
<w:p w:rsidR="00A13CB1" w:rsidRDefault="000F7DF9" w:rsidP="00AE46E9">
    <w:pPr>
        <w:pStyle w:val="Titre-niv1"/>
    </w:pPr>
    <w:r w:rsidRPr="00C135AA">
        <w:t>Contentieux sur la validit du brevet</w:t>
    </w:r>
</w:p>
<w:p w:rsidR="00A13CB1" w:rsidRDefault="000F7DF9" w:rsidP="00AE46E9">
    <w:pPr>
        <w:pStyle w:val="Titre-niv2"/>
    </w:pPr>
    <w:r w:rsidRPr="00C135AA">
        <w:t>Dlai de restauration</w:t>
    </w:r>
</w:p>
<w:p w:rsidR="00A13CB1" w:rsidRDefault="00A13CB1" w:rsidP="00AE46E9">
    <w:pPr>
        <w:pStyle w:val="Paragraphenum-Titrenoy"/>
    </w:pPr>
</w:p>
<w:p w:rsidR="00A13CB1" w:rsidRDefault="000F7DF9" w:rsidP="00AE46E9">
    <w:pPr>
        <w:pStyle w:val="Paragraphesimple"/>
        <w:rPr>
            <w:color w:val="000000"/>
            <w:shd w:val="clear" w:color="auto" w:fill="FFFFFF"/>
        </w:rPr>
    </w:pPr>
    <w:r w:rsidRPr="00C135AA">
        <w:t>Selon l</w:t>
    </w:r>
    <w:r w:rsidR="00963C32">
        <w:t>'</w:t>
    </w:r>
    <w:r w:rsidRPr="00C135AA">
        <w:t>article L. 612-16 du Code de la propri intellectuelle, en cas d</w:t>
    </w:r>
</w:p>
</root>

预期输出

    <root>
    <div1chr>
        <tit>
            <al>Contentieux sur la validit du brevet</al>
        </tit>
        <div2chr>
            <tit>
                <al>Dlai de restauration</al>
            </tit>
            <pnchr>
                <observ>
                    <al>Selon l'article L. 612-16 du Code de la propri intellectuelle, en cas d</al>
                </observ>
            </pnchr>
            <pnchr>
                <observ>
                    <al>Selon l'article L. 612-16 du Code de la propri intellectuelle, en cas d</al>
                </observ>
            </pnchr>
        </div2chr>
    </div1chr>
</root>

你需要一些类似的东西

<xsl:for-each-group select="w:p" 
    group-starting-with="w:pPr/w:pStyle[w:val='Titre-niv1']">
   <div1chr>
      <tit>
        <xsl:value-of select="current-group()[1]/w:r/w:t"/>
      </tit>
      <xsl:for-each-group select="remove(current=group(), 1)"
           group-starting-with="w:pPr/w:pStyle[w:val='Titre-niv2']">
        <div2chr>
          <tit>
            <xsl:value-of select="current-group()[1]/w:r/w:t"/>
          </tit>
          <xsl:apply-templates select="remove(current-group(), 1)"/>
        </div2chr>
      </...
   </...
</...