有没有一种方法可以在html中转换xml,而无需遵循xml结构?

时间:2019-01-17 16:55:30

标签: html xml templates transform

我需要将xml转换为html。我正在使用xsl和xsltproc,但注意到我需要知道xml结构才能为其生成正确的html。我想创建xsl,无论其结构如何,xsl对于所有xml文档都是通用的。 任何想法都将不胜感激。

例如,我想要的只是在转换器看到xml标记para的地方,用html标记p和par的值替换它,而无需记住xml的结构。我需要xml的副本,但需要html。

1 个答案:

答案 0 :(得分:0)

给出示例XML ...

this.expressApp.get("/*", function (req, res, next) {
            return res.sendFile(clientFolder + '/index.html');
 }) 
  

例如,我想要的只是在转换器看到xml标记para的任何地方,用html标记p和par的值替换它,而无需记住xml的结构。

...您可以使用一个简单的模板将所有<?xml version="1.0"?> <xml> <para rollno="392"> <someValue>365 days</someValue> </para> </xml> 标签替换为para标签。将此模板与身份模板结合使用,您就可以替换某些与XML结构无关的标签。

p

输出为:

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">

  <!-- Create HTML prologue -->
  <xsl:template match="/*">
    <html>
      <body>
        <xsl:apply-templates select="node()|@*" />
      </body>
    </html>
  </xsl:template>

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

  <!-- Replace 'para' with 'p' -->
  <xsl:template match="para">
    <p>
      <xsl:apply-templates select="node()|@*" />
    </p>
  </xsl:template>

</xsl:stylesheet>