我想从xslt表中的多个创建一行。像这样 :
|Table name|Category| Id |
|----------+--------+--------|
| Object 1 | Rooms | 407843 |
但是现在我的xslt模板输入:
|Table name|Category| Id |
|----------+--------+--------|
| Object 1 | | |
| | Rooms | |
| | | 407843 |
xml文档如下所示:
<Object>
<Property>
<Property property="Table name">Object 1</Property>
<Property property="Category">Rooms</Property>
<Property property="Id">407843</Property>
</Property>
</Object>
问题是我无法修改xml文件,因此它的结构与上面相同。
和xslt文件是这样的:
<tr>
<td>
<xsl:for-each select=".">
<xsl:choose>
<xsl:when test="contains(@property, 'Table name')">
<xsl:value-of select="."/>
</xsl:when>
</xsl:choose>
</xsl:for-each>
</td>
<td>
<xsl:for-each select=".">
<xsl:choose>
<xsl:when test="contains(@property, 'Category')">
<xsl:value-of select="."/>
</xsl:when>
</xsl:choose>
</xsl:for-each>
</td>
<td>
<xsl:for-each select=".">
<xsl:choose>
<xsl:when test="contains(@property, 'Id')">
<xsl:value-of select="."/>
</xsl:when>
</xsl:choose>
</xsl:for-each>
</td>
</tr>
有多个对象,它们具有相同的属性,但有时顺序不相同。
让我们输入以下示例:
XML格式
<Objects>
<Object>
<Property>
<Property property="Table name">Table 1</Property>
<Property property="Category">Cat 1</Property>
<Property property="Id">001</Property>
</Property>
</Object>
<Object>
<Property>
<Property property="Category">Cat 2</Property>
<Property property="Id">002</Property>
<Property property="Table name">Table 2</Property>
</Property>
</Object>
</Objects>
XSLT 1.0
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" omit-xml-declaration="yes" version="1.0" encoding="utf-8" indent="yes"/>
<xsl:template match="/Objects">
<table border="1">
<tr>
<th>Table</th>
<th>Category</th>
<th>Id</th>
</tr>
<xsl:for-each select="Object/Property">
<tr>
<td><xsl:value-of select="Property[@property='Table name']"/></td>
<td><xsl:value-of select="Property[@property='Category']"/></td>
<td><xsl:value-of select="Property[@property='Id']"/></td>
</tr>
</xsl:for-each>
</table>
</xsl:template>
</xsl:stylesheet>
结果(渲染)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句