XHTML到XML XSLT的转换

我正在做一个非常简单的xslt将html页面转换为xml文件.

但在我看来,起点并不是那么简单.我的第一个目标是转换一个< html>标记为< topic>标签.

我做了以下xslt:

<xsl:template match="@*|node()">
   <xsl:copy>
    <xsl:apply-templates select="@*|node()"/> 
  </xsl:copy>  
 </xsl:template>

 <xsl:template match="/">
   <xsl:apply-templates/>
 </xsl:template>

 <xsl:template match="html">
  <topic>
    <xsl:text> Conversion Test</xsl:text>
  </topic>
 </xsl:template>

但是,现在我运行这个xslt后,结果xml纯粹与原始html页面内容相同,似乎我写的第三个模板匹配(以匹配< html>标记)永远不会被击中.

源html看起来像:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
   <head>..</head>
   <body>...</body>
 </html>

专家可以帮我一点吗?

解决方法

XSLT 1.0:

尝试将xmlns:x =“http://www.w3.org/1999/xhtml”添加到xsl:stylesheet并将匹配更改为match =“x:html”. (注意:您不必使用“x”;您可以选择任何您想要的东西.)

XSLT 2.0:

使用上面的方法或将匹配中的命名空间前缀替换为“*”(match =“*:html”).您还可以将xpath-default-namespace =“http://www.w3.org/1999/xhtml”添加到xsl:stylesheet中.

相关文章

vue阻止冒泡事件 阻止点击事件的执行 &lt;div @click=&a...
尝试过使用网友说的API接口获取 找到的都是失效了 暂时就使用...
后台我拿的数据是这样的格式: [ {id:1 , parentId: 0, name:...
JAVA下载文件防重复点击,防止多次下载请求,Cookie方式快速简...
Mip是什么意思以及作用有哪些