我正在努力创建一个通用的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标记名称,以使其足够通用。不知道这是否可能。任何想法如何去做?
这是@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)
我没有尝试对混合内容做任何非常聪明的事情。
| 归档时间: |
|
| 查看次数: |
3399 次 |
| 最近记录: |