Как передать имя переменной внутри цикла for-each в xslt - PullRequest
0 голосов
/ 20 мая 2019

Я новичок в Xslt. Я читаю XML-данные, используя xslt. например

<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"/>, я получаю значение название для поля эпохи. Кто-нибудь сталкивался с такой проблемой? или вы можете поделиться, как передать имя переменной вместо имени элемента для значения внутри цикла for-each?

...