Передача локального varaible из одного шаблона в другой шаблон в xslt - PullRequest
0 голосов
/ 12 июня 2018

Я пытаюсь преобразовать xml в html, используя xslt.Теперь я поражен использованием переменных в xslt.Можно ли передать переменные из родительского узла в другой шаблон, отличный от дочернего узла?У меня есть код xylt amy, подобный этому `

<xsl:template match="xpath"name="a">
<xsl:variable name="object" select="Hello">
<xsl:call-template="b">
<xsl:with-param name="object" select="$object"/>
</xsl:call-template>
</xsl:variable>
</xsl:template>
<xsl:template match="xpath" name="b">
<xsl:param name="object"/>
</xsl:template>

`

Я получаю следующую ошибку unexpected xslt element 'param'

Помогите мне решить эту проблему.

1 Ответ

0 голосов
/ 02 июля 2018

Существует несколько проблем с кодом, к которому предоставлен общий доступ.

  1. В шаблоне XSL не могут быть указаны оба атрибута match и name.Вы можете иметь атрибут match или name.Атрибут match может идти с атрибутом mode, если вы хотите сопоставить его с тем же элементом из входного XML.
  2. XSL-переменная object была объявлена ​​и ей присвоено значение Hello,Однако вы также вызываете шаблон b изнутри <xsl:variable>, что неверно.Переменные XSL не могут содержать select и content.

Возможно, вы захотите изменить код, как показано ниже, если вы хотите передать параметр из одного шаблона в другой.

<!-- template matching with input XML -->
<xsl:template match="xpath">
    <!-- declare variable "object" and assign value as "Hello" -->
    <xsl:variable name="object" select="'Hello'" />

    <!-- call template "b" and pass the value of variable "object" -->
    <xsl:call-template name="b">
        <xsl:with-param name="object" select="$object" />
    </xsl:call-template>
</xsl:template>

<!-- create template "b" using @name attribute -->
<xsl:template name="b">
    <!-- declare parameter -->
    <xsl:param name="object" />

    <!-- print the value of parameter -->
    <xsl:value-of select="$object" />
</xsl:template>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...