通用XSLT将XML制成表格

use*_*142 6 html xml xslt

我正在努力创建一个通用的XSLT,以创建任何输入XML数据的名称-值表。

例如。

<root>
    <Field1>value1</Field1>
    <Field2>value2</Field2>
    <Field3>value3</Field3>
</root>
Run Code Online (Sandbox Code Playgroud)

输出应如下所示:

<table>
   <tr>
      <td>Field1</td>
      <td>value1</td>
  </tr>
   <tr>
      <td>Field2</td>
      <td>value2</td>
  </tr>
   <tr>
      <td>Field3</td>
      <td>value3</td>
  </tr>
</table>
Run Code Online (Sandbox Code Playgroud)

我想避免在XSLT代码中使用xml标记名称,以使其足够通用。不知道这是否可能。任何想法如何去做?

Mic*_*Kay 8

这是@ABach解决方案的改进,它尝试创建嵌套表:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
  <xsl:output omit-xml-declaration="yes" indent="yes"/>
  <xsl:strip-space elements="*"/>

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

  <xsl:template match="*">
    <tr>
      <td>
        <p><xsl:value-of select="name()"/></p>
      </td>
      <td>
        <p><xsl:value-of select="."/></p>
      </td>
    </tr>
  </xsl:template>

  <xsl:template match="*[*]">
    <tr>
      <td>
        <p><xsl:value-of select="name()"/></p>
      </td>
      <td>
        <table>
          <xsl:apply-templates/>
        </table>
      </td>
    </tr>
  </xsl:template>

</xsl:stylesheet>
Run Code Online (Sandbox Code Playgroud)

我没有尝试对混合内容做任何非常聪明的事情。