使用XSLT动态处理和排序html到xml中的节点[英] Dynamically process and sort nodes in html to xml using XSLT

问题描述

我有一个 HTML 文件,我只想使用 XSLT 转换为 XML..

我要
1.所有要保留的节点.
2.所有元素都已排序.
3.并且代码应该是动态的.

我有一个巨大的文件,所以我想要一个简单的代码来处理所有的 html 节点.这里我用 xslt 解释了我的编码
如果你理解它请帮助我..


我的 HTML 文件是..

<div id="2196" ="one_tail"><span id="2197" class="one_biblio"><span id="2198" class="one_section-title">标题</span><ol id="2199" class="one_biblio-sec"><li id="2200" class="one_bib-reference"><span id="2202" class="one_reference"><span id="2203" class="one_contribution"><span id="2204" class="one_authors"><span id="2205" class="one_author"><!--这里id值放错了--><span id="2207" class="one_surname"></span><span id="2206" class="one_given-name">GivenName</span></span></span><span id="2208" class="one_title"><span id="2209" class="one_maintitle">技术</span></span></span><span id="2210" class="one_host"><span id="2211" class="one_book"><span id="2213" class="one_publisher">发​​布者 </span></span></span>.</span></li></ol></span></div>

我希望 XML 文件为:
这里使用属性类值作为元素名称.

<tail id="2196"><biblio id="2197"><section-title id="2198">标题</section-title><biblio-sec id="2199"><bib-reference id="2200"><参考 id="2202"><贡献 id="2203"><作者 id="2204"><作者 id="2205"><!-- 更正 id --><给定名称 id="2206">GivenName </given-name>< id="2207"></surname></author></authors><title id="2208" ><maintitle id="2209">技术</maintitle></title></contribution></reference><主机 id="2210">< id="2211"><发布者 id="2213">发​​布者 </publisher></book></host></bib-reference></biblio-sec></biblio></tail>

我写的 XSLT 没有给出我想要的..
XSLT 代码为:
<xsl:template 匹配="*|/" xmlns:xsl="#unknown"><xsl:for-each select="."><xsl:for-each select="current()/*"><xsl:sort select="@id" order="升序" /></xsl:for-each>跨度><xsl:if test="starts-with(@class,'one_') "><xsl:variable name="nodename" select="子字符串-after(@class,'one_')" /><xsl:element name="{$nodename}"><xsl:attribute name="id" 选择="@id" /><xsl:apply-templates /></xsl:element></xsl:if><xsl:if test="not(@class)"><xsl:apply-templates /></xsl:if></xsl:for-each>跨度></xsl:template>

谁能帮帮我..

推荐答案

nodename}"><xsl:attribute name="id" 选择="@id" /><xsl:apply-templates /></xsl:element></xsl:if><xsl:if test="not(@class)"><xsl:apply-templates /></xsl:if></xsl:for-each>跨度></xsl:template>
谁能帮帮我..

本文地址:https://www.itbaoku.cn/post/1394995.html