Используйте переменную XSL в XML-теге - PullRequest
0 голосов
/ 06 сентября 2011

У меня есть XML-файл, который я хочу преобразовать в XML.И мне нужно динамически установить параметр имени XML-тегов, чтобы это было примерно так:

<VALUE name="$varname"><xsl:value-of select="@value"/></VALUE>

Я получил что-то вроде этого:

<xsl:for-each select="PRODTABLE/PRODTR">
   <xsl:variable name="varname">
      <xsl:copy-of select="PRODTD/PRAT/@name"/>
   </xsl:variable>

   <VALUE name="$varname">
      <xsl:value-of select="PRODTD/PRAT/VALUE"/>
   </VALUE>

</xsl:for-each>

Но, очевидно, это не такне работаетЕсть ли способ добиться этого?

1 Ответ

3 голосов
/ 06 сентября 2011

Это часто задаваемые вопросы .

Быстрый ответ : значение атрибута, указанное как name="$varname", буквально является строкой "$ varname".

В XSLT для получения атрибута с динамически вычисленным значением можно использовать AVT ( Шаблон значения атрибута ) или <xsl:attribute> инструкция.

Решение :

Использование :

<VALUE name="{$varname}"> 

Ваш код можетбыть переписан таким коротким способом :

Вместо:

    <xsl:for-each select="PRODTABLE/PRODTR">
        <xsl:variable name="varname">
            <xsl:copy-of select="PRODTD/PRAT/@name"/>
        </xsl:variable>
        <VALUE name="$varname">
            <xsl:value-of select="PRODTD/PRAT/VALUE"/>
        </VALUE>
    </xsl:for-each>

используйте:

    <xsl:for-each select="PRODTABLE/PRODTR">
        <VALUE name="{PRODTD/PRAT/@name}">
            <xsl:value-of select="PRODTD/PRAT/VALUE"/>
        </VALUE>
    </xsl:for-each>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...