Использование param в шаблонах XSLT - PullRequest
1 голос
/ 06 сентября 2010

Я устанавливаю параметр xslt с помощью PHP, а затем вызываю преобразование.Я хочу использовать значение параметра в выражении XPath, чтобы получить нужные узлы, но это, похоже, не работает.Я полагаю, это возможно, я думаю, что мне просто не хватает синтаксиса.Вот что у меня есть ...

PHP:

$xslt->setParameter('','month','September');

XSL:

<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" />

<!-- Heres my param from the PHP -->
<xsl:param name="month" />

<!-- Here where I want it for grab the month node with the attribute name="September" but it doesn't work, gives me a compilation error -->
<xsl:template match="/root/year/month[@name = $month]">
    <p>
        <xsl:value-of select="$month" />
    </p>

</xsl:template>

1 Ответ

1 голос
/ 06 сентября 2010

Вы получаете ошибку, потому что не разрешено использовать переменные (или внешние параметры) в выражении match шаблона.

Вы можете использовать следующий обходной путь:

<xsl:template match="/root/year/month">
    <xsl:if test="@name = $month">
      <p>
        <xsl:value-of select="$month" />
      </p>
    </xsl:if>
  </xsl:template>
...