如何在xslt中的for-each循环内传递变量名

时间:2019-05-20 11:03:21

标签: xslt xslt-1.0 xslt-2.0 xslt-grouping exslt

我是Xslt的新手,可以使用xslt读取xml数据。例如

<head>
<root>
  <data>
    <Name>xxx</Name>      
    <age>10</age>
  </data>
  <data>
    <Name>yyy</Name>      
    <age>20</age>
  </data>
  <data>
    <Name>zzz</Name>      
    <age>15</age>
  </data>
</root>
</head>

当我尝试在xslt以下使用

<xsl:template match="head">
  <xsl:element name="Root1">
      <xsl:for-each select="//head/root/data">
         <xsl:element name="name">
            <xsl:value-of select="$select_Name"/>
         </xsl:element>
         <xsl:element name="age">
            <xsl:value-of select="$select_age"/>
         </xsl:element>
      </xsl:for-each>
  </xsl:element>
</xsl:template>

我的c#代码是

  XslTransform xsl=new XslTransform();
  xsl.Load("xsltfile");
  xsl.Transform("inputxml.xml","outputxml.xml");

当我使用上面的xslt文件时,我没有得到正确的输出。而当我将元素的xpath赋给另一个xslt文件中的变量并将xslt包含到此xslt中并传递变量名而不是像这样的硬编码值<xsl:value-of select="$select_Name"/>时,而$ name被声明为<xsl:variable name="select_Name" select="//head/root/data/Name"/> im获取“年龄”字段的名称值。有人遇到这种问题吗?还是可以分享在for-each循环中如何通过变量名而不是元素名来传递值?

0 个答案:

没有答案