使用 XSLT 2.0 将 HTML 转换为 XML

里根

我需要使用XSLT 2.0将 HTML 文件转换为 XML 格式HTML 文件仅包含<p>具有类h1h2h3、 . . .

<body>
    <p class='h1'>the fisr A</p>
    <p class='txt'>one</p>
    <p>tow</p>
    <p class='h2'>the sec B</p>
    <p class='txt'>theree</p>
    <p class='h2'>the sec sec B</p>
    <p class='txt'>the next text</p>
    <p class='h3'>the fisr C</p>
    <p class='txt'>four</p>
    <p class='txt'>five</p>
    <p class='h1'>the seccond A</p>
    <p class='txt'>the seccond txt</p>
    <p class='h2'>the second B</p>
    <p class='txt'>six</p>
    <p class='txt'>seven</p>
    <p class='h1'>the third A</p>
    <p class='txt'>eight</p>
    <p class='txt'>nine</p>    
</body>

我需要如下所示的 XML 输出

<book>
   <sectionA>
      <title>the fisr A</title>
      <p class="txt">one</p>
      <p>tow</p>
      <sectionB>
         <title>the sec B</title>
         <p class="txt">theree</p>
      </sectionB>
      <sectionB>
         <title>the sec sec B</title>
         <p class="txt">the next text</p>
         <sectionC>
            <title>the fisr C</title>
            <p class="txt">four</p>
            <p class="txt">five</p>
         </sectionC>
      </sectionB>
   </sectionA>
   <sectionA>
      <title>the seccond A</title>
      <p class="txt">the seccond txt</p>
      <sectionB>
         <title>the second B</title>
         <p class="txt">six</p>
         <p class="txt">seven</p>
      </sectionB>
   </sectionA>
   <sectionA>
      <title>the third A</title>
      <p class="txt">eight</p>
      <p class="txt">nine</p>
   </sectionA>
</book>

任何人都可以帮助我获得所需的输出吗?

Rupesh_Kr

你可以试试这个:

<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">        
    <xsl:template match="body">
        <book>
            <xsl:for-each-group select="p" group-starting-with="p[@class='h1']">
                <sectionA>
                    <title>
                        <xsl:value-of select="node()"/>
                    </title>
                    <xsl:for-each-group select="current-group() except ." group-starting-with="p[@class='h2']">
                        <xsl:choose>
                            <xsl:when test="self::p[@class='h2']">
                                <sectionB>
                                    <title>
                                        <xsl:value-of select="node()"/>
                                    </title>
                                    <xsl:for-each-group select="current-group() except ." group-starting-with="p[@class='h3']">
                                        <xsl:choose>
                                            <xsl:when test="self::p[@class='h3']">
                                                <sectionC>
                                                    <title>
                                                        <xsl:value-of select="node()"/>
                                                    </title>
                                                    <xsl:apply-templates select="current-group() except ."></xsl:apply-templates>
                                                </sectionC>
                                            </xsl:when>
                                            <xsl:otherwise>
                                                <xsl:apply-templates select="current-group()"></xsl:apply-templates>
                                            </xsl:otherwise>
                                        </xsl:choose>
                                    </xsl:for-each-group>
                                </sectionB>
                            </xsl:when>
                            <xsl:otherwise>
                                <xsl:apply-templates select="current-group()"></xsl:apply-templates>
                            </xsl:otherwise>
                        </xsl:choose>
                    </xsl:for-each-group>

                </sectionA>
            </xsl:for-each-group>
        </book>
    </xsl:template>

    <xsl:template match="p">
        <xsl:copy>
            <xsl:copy-of select="@*"/>
            <xsl:apply-templates select="node()"/>
        </xsl:copy>
    </xsl:template>
</xsl:stylesheet>      <!-- added by edit -->

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用xslt将xml转换为html

来自分类Dev

使用xslt将html表转换为xml

来自分类Dev

使用xslt以表格格式将xml转换为html

来自分类Dev

复杂使用xslt将html表转换为xml

来自分类Dev

如何使用xslt将xml转换为html表

来自分类Dev

使用 XSLT 模板将 XML 转换为 HTML

来自分类Dev

使用 XSLT 模板将 XML 转换为 HTML

来自分类Dev

使用XSLT将XML转换为XML

来自分类Dev

通过xslt将XML转换为HTML

来自分类Dev

使用XSLT将XML转换为JSON

来自分类Dev

使用XSLT将JSON转换为Xml

来自分类Dev

使用XSLT将XMI转换为XML

来自分类Dev

使用xslt将XML转换为TXT

来自分类Dev

使用 xslt 将 xml 转换为 json

来自分类Dev

使用XSLT将SOAP转换为HTML

来自分类Dev

如何使用XSLT将xml标记和属性作为具有等价树的html文本将xml转换为html?

来自分类Dev

在Java中使用XSLT将XML转换为HTML-String

来自分类Dev

使用字符串长度条件将XML转换为XSLT中的HTML

来自分类Dev

如何使用xslt将xml中的文本转换为html中的超链接

来自分类Dev

在Java中使用XSLT将XML转换为HTML-String

来自分类Dev

将XML转换为HTML时是否必须对XSLT使用模板?

来自分类Dev

使用字符串长度条件将XML转换为XSLT中的HTML

来自分类Dev

如何使用xslt将xml中的文本转换为html中的超链接

来自分类Dev

使用XSLT将XML转换为XML(无父节点)

来自分类Dev

XSLT-使用Xsl将Xml转换为Xml

来自分类Dev

使用XSLT将XML文件转换为RDF / XML

来自分类Dev

使用XSLT将旧的XML转换为新的XML格式

来自分类Dev

使用XSLT 1.0将非xml转换为xml或SOAP

来自分类Dev

使用XSLT将FGDC XML转换为ISO XML