首页 > 解决方案 > 有没有办法在不需要遵循xml结构的情况下在html中转换xml?

问题描述

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

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

标签: htmlxmltemplatestransform

解决方案


给定一个示例 XML...

<?xml version="1.0"?>
<xml>
    <para rollno="392">
        <someValue>365 days</someValue>
    </para>
</xml>

例如,我想要的只是转换器看到 xml 标记 para 用 html 标记 p 和 par 的值替换它,而不考虑 xml 的结构。

...您可以使用带有简单模板的标签替换所有para标签。p将此/这些模板与标识模板结合使用,您可以独立于 XML 结构替换某些标签。

<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>

输出是:

<html>
  <body>
    <p rollno="392">
      <someValue>365 days</someValue>
    </p>
  </body>
</html>

推荐阅读