Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xslt 添加额外的列并检索数据_Xslt - Fatal编程技术网

Xslt 添加额外的列并检索数据

Xslt 添加额外的列并检索数据,xslt,Xslt,我是XSL新手,有以下问题: 我需要用以下数据创建一个表,并在末尾添加一个额外的列: <datafields> <field Name='name' /> <field Name='lastname' /> <field Name='user' /> <field Name='text' /> </datafields> <form> <comment name='Maria' las

我是XSL新手,有以下问题:

我需要用以下数据创建一个表,并在末尾添加一个额外的列:

<datafields>
  <field Name='name' />
  <field Name='lastname' />
  <field Name='user' />
  <field Name='text' />
</datafields>

<form>
  <comment name='Maria' lastname='smith' user='smithm' text='hello' />
  <comment name='Julia' lastname='smith' user='smithm' text='hello' />
  <comment name='Luke' lastname='smith' user='smithm' text='hello' />
  <comment name='Martin' lastname='smith' user='smithm' text='hello' />
  <comment name='Fred' lastname='jones' user='jonesm' text='hello' />
</form>


我该怎么做呢?

假设提供的XML是一个单一的、格式良好的XML,那么当您接受此输入时:

<root>
  <datafields>
    <field Name='name' />
    <field Name='lastname' />
    <field Name='user' />
    <field Name='text' />
  </datafields>
  <form>
    <comment name='Maria' lastname='smith' user='smithm' text='hello' />
    <comment name='Julia' lastname='smith' user='smithm' text='hello' />
    <comment name='Luke' lastname='smith' user='smithm' text='hello' />
    <comment name='Martin' lastname='smith' user='smithm' text='hello' />
    <comment name='Fred' lastname='jones' user='jonesm' text='hello' />
  </form>
</root>

并在其上使用此XSL 1.0转换:

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

  <xsl:template match="datafields">
    <tr>
      <xsl:for-each select="field">
        <th>
          <xsl:value-of select="@Name" />
        </th>
      </xsl:for-each>
    </tr>
  </xsl:template>

  <xsl:template match="form">
    <xsl:for-each select="comment">
      <tr>
        <td>
          <xsl:value-of select="@name"/>
        </td>
        <td>
          <xsl:value-of select="@lastname"/>
        </td>
        <td>
          <xsl:value-of select="@user"/>
        </td>
        <td>
          <xsl:value-of select="@text"/>
        </td>
      </tr>
    </xsl:for-each>
  </xsl:template>

然后它将产生以下结果:

<table>

<tr>
<th>name</th><th>lastname</th><th>user</th><th>text</th>
</tr>

<tr>
<td>Maria</td><td>smith</td><td>smithm</td><td>hello</td>
</tr>
<tr>
<td>Julia</td><td>smith</td><td>smithm</td><td>hello</td>
</tr>
<tr>
<td>Luke</td><td>smith</td><td>smithm</td><td>hello</td>
</tr>
<tr>
<td>Martin</td><td>smith</td><td>smithm</td><td>hello</td>
</tr>
<tr>
<td>Fred</td><td>jones</td><td>jonesm</td><td>hello</td>
</tr>

</table>

namelastnameusertext
玛丽亚斯米斯密斯海洛
朱利亚斯密斯切洛
卢克斯密斯切洛
马丁斯切洛
弗雷德·琼斯你好
此转换将为
数据字段
中的每个项目创建一个表头行,并为
表单
中的每个
注释
创建一个数据行


如果您需要一个额外的列,就像您提到的,您只需要在第二个和第三个模板中添加空单元格。如果它应该生成一个完整有效的HTML页面,那么您需要在
标记周围的第一个模板中添加适当的标记

欢迎来到SO。请阅读和,以获取撰写好问题的提示。在您的情况下,您缺少两条关键信息。(1) 您没有提供想要输出的内容的示例,(2)您没有表明您已尝试自己解决问题。请编辑您的帖子以包含此内容。以下哪项是您的输入文档?还是两者都有?以下哪项是您的输出文档?XSLT的哪个版本?