Я пытаюсь преобразовать xml из одного формата в другой, и мне нужна помощь, поскольку я новичок в xslt. Мой вход/источник XML, как это:Использование переменной за пределами шаблона XSLT
<field name="Duration">
<Duration value="00:13:56:544" />
<DurationFrames value="20057" />
<DurationSMPTE value="00:13:56:13" />
</field>
и требуемый выход XML должен быть таким:
<field internal="yes" name="Frames" value="20057"/>
<field internal="yes" name="Duration_msec" value="00:13:56:544"/>
<field internal="yes" name="Duration_SMPTE" value="00:13:56:13"/>
<field name="Duration" value="00:13:56:544(13)"/>
Здесь значение Продолжительность: 00: 13: 56: 544 (13) комбинация из двух полей:
1) Duration_msec (00: 13: 56: 544)
2) в последней части Duration_SMPTE (00: 13: 56: 13), который является 13
Это небольшой сегмент большего размера XML, я только отправляю узел XML, где я нахожусь в затруднении.
Вот что XSLT я написал:
<xsl:when test="@name='Duration'">
<xsl:apply-templates select="node()" />
</xsl:when>
и вот мои шаблоны:
<xsl:template match="Duration">
<xsl:variable name="var_Duration_val" select="@value" />
<field internal="yes" name="Duration_msec" value="{$var_Duration_val}"/>
</xsl:template>
<xsl:template match="DurationFrames">
<xsl:variable name="var_Duration_Frames" select="@value" />
<field internal="yes" name="Frames" value="{$var_Duration_Frames}"/>
</xsl:template>
<xsl:template match="DurationSMPTE">
<xsl:variable name="var_Duration_smpte" select="@value" />
<field internal="yes" name="Duration_SMPTE" value="{$var_Duration_smpte}"/>
</xsl:template>
Я столкнулся проблемой в достижении последней части, то есть,
<field name="Duration" value="00:13:56:544(13)"/>
Переменные в разных шаблонах. Пожалуйста, помогите мне в достижении последней строки вывода.
The XSL: шаблон матч = "поле [@ имя = 'Продолжительность']" не работал/соответствует узлу XML. Но другие линии помогли мне. –
Вот что сработало для меня: ' ' –
Я не вижу всю вашу таблицу стилей, как в вашем [предыдущем вопросе] (http://stackoverflow.com/questions/35860500/need-help-in-choosing-between-xslfor-each-and-xsltemplate) Я подозреваю, что вы используете 'xsl: choose', где вы * должен * использовать отдельные шаблоны. –