在xslt中从多行生成一行

亚历山大·斯基宾

我想从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>
michael.hor257k

有多个对象,它们具有相同的属性,但有时顺序不相同。

让我们输入以下示例:

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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在一行中运行多行循环

来自分类Dev

从多行中获取一行

来自分类Dev

多行到Oracle中的一行

来自分类Dev

在一行中打印多行语句

来自分类Dev

一行 SQL 中的多行

来自分类Dev

使一行多行

来自分类Dev

在一行中显示两行或更多行

来自分类Dev

在一行中显示两行或更多行

来自分类Dev

我如何为 DataGrid 中的每一行生成复选框或任何只是为了选择多行?

来自分类Dev

删除多行单元格中的第一行

来自分类Dev

sql查询从多行中只选择一行

来自分类Dev

将同一行中的多行合并

来自分类Dev

与dplyr中的“摘要”相反:将一行变成多行

来自分类Dev

将PostgreSQL中的多行合并为一行?

来自分类Dev

一行或多行RegEx在Visual Studio中查找+替换

来自分类Dev

在一行而不是多行中获取编码的分类变量

来自分类Dev

用多行高亮显示ggplot中的一行

来自分类Dev

尝试将表中的多行合并为一行

来自分类Dev

从多行javascript和jquery中删除一行

来自分类Dev

将同一行中的多行合并

来自分类Dev

将查询中的任一行分成多行

来自分类Dev

与dplyr中的“摘要”相反:将一行变成多行

来自分类Dev

一行中的多行TextView和单行TextView

来自分类Dev

在Excel中根据最后一行选择多行

来自分类Dev

在变量的多行中添加同一行

来自分类Dev

使用前一行中的 id 删除多行

来自分类Dev

XSLT对一行中的表数据进行计数

来自分类Dev

将多行合并为一行

来自分类Dev

从多行创建视图到一行