gpt4 book ai didi

xslt - 使用XSLT的XML到HTML表

转载 作者:行者123 更新时间:2023-12-04 22:24:43 26 4
gpt4 key购买 nike

我需要能够将一个简单的xml数据集转换为html表,并且在查找符合我需要的语法示例时遇到了麻烦。我想使用一种样式表,可以将外观相似的数据集转换为带有可变列的html表。这意味着除“行”和“行”外,它不能使用任何硬编码的元素名称。

我需要的样式表将能够转换:

<?xml version="1.0" encoding="UTF-8"?>
<rows>
<row>
<AccountId>BlPUAA0</AccountId>
<AccountName>Initech</AccountName>
<AcocuntStatus>Client</AcocuntStatus>
</row>
<row>
<AccountId>CJxIAAW</AccountId>
<AccountName>Intertrode</AccountName>
<AcocuntStatus>Prospect</AcocuntStatus>
</row>
</rows>

进入:
<table>
<tr>
<th>AccountId</th>
<th>AccountName</th>
<th>AcocuntStatus</th>
</tr>
<tr>
<td>BlPUAA0</td>
<td>Initech</td>
<td>Client</td>
</tr>
<tr>
<td>CJxIAAW</td>
<td>Intertrode</td>
<td>Client</td>
</tr>
</table>

和这个:
<?xml version="1.0" encoding="UTF-8"?>
<rows>
<row>
<AccountId>BlPUAA0</AccountId>
<AccountName>Initech</AccountName>
</row>
<row>
<AccountId>CJxIAAW</AccountId>
<AccountName>Intertrode</AccountName>
</row>
</rows>

到这个:
<table>
<tr>
<th>AccountId</th>
<th>AccountName</th>
</tr>
<tr>
<td>BlPUAA0</td>
<td>Initech</td>
</tr>
<tr>
<td>CJxIAAW</td>
<td>Intertrode</td>
</tr>
</table>

最佳答案

简单直接的解决方案:

<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>

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

<xsl:template match="row[1]">
<tr><xsl:apply-templates select="*" mode="header"/></tr>
<xsl:call-template name="standardRow"/>
</xsl:template>

<xsl:template match="row" name="standardRow">
<tr><xsl:apply-templates select="*"/></tr>
</xsl:template>

<xsl:template match="row/*">
<td><xsl:apply-templates select="node()"/></td>
</xsl:template>

<xsl:template match="row/*" mode="header">
<th><xsl:value-of select="name()"/></th>
</xsl:template>
</xsl:stylesheet>

应用于第一个提供的XML文档时:
<rows>
<row>
<AccountId>BlPUAA0</AccountId>
<AccountName>Initech</AccountName>
<AcocuntStatus>Client</AcocuntStatus>
</row>
<row>
<AccountId>CJxIAAW</AccountId>
<AccountName>Intertrode</AccountName>
<AcocuntStatus>Prospect</AcocuntStatus>
</row>
</rows>

产生所需的正确结果:
<table>
<tr>
<th>AccountId</th>
<th>AccountName</th>
<th>AcocuntStatus</th>
</tr>
<tr>
<td>BlPUAA0</td>
<td>Initech</td>
<td>Client</td>
</tr>
<tr>
<td>CJxIAAW</td>
<td>Intertrode</td>
<td>Prospect</td>
</tr>
</table>

应用于第二个提供的XML文档时 :
<rows>
<row>
<AccountId>BlPUAA0</AccountId>
<AccountName>Initech</AccountName>
</row>
<row>
<AccountId>CJxIAAW</AccountId>
<AccountName>Intertrode</AccountName>
</row>
</rows>

再次生成所需的正确结果:
<table>
<tr>
<th>AccountId</th>
<th>AccountName</th>
</tr>
<tr>
<td>BlPUAA0</td>
<td>Initech</td>
</tr>
<tr>
<td>CJxIAAW</td>
<td>Intertrode</td>
</tr>
</table>

关于xslt - 使用XSLT的XML到HTML表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5657549/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com