返回首页
当前位置: 主页 > 编程语言 > HTML教程 >

MAML文件转换为HTML实现教程

时间:2016-09-29 22:18来源:电脑教程学习网 www.etwiki.cn 编辑:admin

MAML(Microsoft Assistance Markup Language)是微软用于提供帮助信息的文档格式。
在项目中需要读取SCOM管理包中的产品知识库在网页上展示,但是查询后发现scom知识库使用MAML格式进行存储,需要将其转换为HTML样式。
本文中的代码在修改映射文件后可以用在任意xml格式之间的相互转换。
 

【开发环境】

开发工具:Visual studio 2013
操作系统:Windows 8.1
 

【正文】

  新建程序集

代码如下

内嵌的映射文件路径为:程序集名称+文件相对路径。代码使用默认参数是为了方便单元测试。

 新建转换用的映射文件

修改属性为内嵌资源

转换用的xslt文件
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
 
                          xmlns:msxsl="urn:schemas-microsoft-com:xslt"
                          xmlns:maml="http://schemas.microsoft.com/maml/2004/10"
                          exclude-result-prefixes="msxsl maml">
 
  <xsl:output method="html" indent="no"/>
  <xsl:template match="/root">
    <xsl:apply-templates />
  </xsl:template>
  <xsl:template match="maml:section">
    <xsl:apply-templates />
  </xsl:template>
 
  <xsl:template match="maml:navigationLink">
    <a>
      <xsl:attribute name="href">
        <xsl:value-of select="maml:uri/@href" />
      </xsl:attribute>
      <xsl:value-of select="maml:linkText"/>
    </a>
  </xsl:template>
 
  <xsl:template match="maml:listItem">
    <li>
      <xsl:apply-templates />
    </li>
  </xsl:template>
 
  <xsl:template match="maml:list">
    <ul>
      <xsl:apply-templates />
    </ul>
  </xsl:template>
 
  <xsl:template match="maml:title">
    <h2>
      <xsl:value-of select="."/>
    </h2>
  </xsl:template>
 
  <xsl:template match="text()">
    <xsl:value-of select="."/>
  </xsl:template>
 
  <xsl:template match="maml:para">
    <p>
      <xsl:apply-templates />
    </p>
  </xsl:template>
 
  <xsl:template match="maml:ui">
    <xsl:choose>
      <xsl:when test="normalize-space(.)">
        <span style="text-decoration:underline">
          <xsl:apply-templates />
        </span>
      </xsl:when>
      <xsl:otherwise>
      </xsl:otherwise>
    </xsl:choose>
  </xsl:template>
 
  <xsl:template match="maml:entry">
    <td>
      <xsl:apply-templates />
    </td>
  </xsl:template>
 
  <xsl:template match="maml:row">
    <tr>
      <xsl:apply-templates />
    </tr>
  </xsl:template>
 
  <xsl:template match="maml:table">
    <table  border="1">
      <xsl:apply-templates />
    </table>
  </xsl:template>
</xsl:stylesheet>
 
【测试】
测试代码

转换前MAML格式文件

 
转换后HTML格式文件
------分隔线----------------------------
标签(Tag):MAML文件
------分隔线----------------------------
推荐内容
猜你感兴趣