如何使用 XSLT 将嵌套部分 DOCX 文件转换为 XML
How can convert the nested section DOCX file in to the XML using - XSLT
如何将 DOCX 部分样式(例如 Titre-niv1
、Titre-niv2
、Titre-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>
</...
</...
</...
如何将 DOCX 部分样式(例如 Titre-niv1
、Titre-niv2
、Titre-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>
</...
</...
</...