Использование параметра шаблона для значения атрибута, используемого при поиске элемента, завершается неудачно, но локально определенная строковая переменная в порядке. - PullRequest
1 голос
/ 22 июля 2011

Мне нужно определить, существует ли элемент с атрибутом имени, установленным на определенное значение.Документ, в котором мне нужно искать, не тот, к которому применяется таблица стилей.Я хочу передать строковое значение для поиска в качестве параметра в шаблон.Поиск не удается, когда я это делаю, но успешно, когда я создаю локальную переменную в шаблоне и использую эту переменную в предикате поиска.Я не могу понять, почему.

Я пробовал это с двумя различными движками xsl, и оба показывают одинаковое поведение.

Шаблон показан ниже.Я хочу найти элемент сигнала с атрибутом имени, равным символам, перед "__".

Первый сбой, но второй, для которого в шаблоне указана искомая строка, завершается успешно.,Почему?

    <xsl:template name="portIsSigObjOrQuality">
    <xsl:param name="portName" />

    <xsl:variable name="nameOfCompoundInstanceFromPort"
     select="substring-before($portName,'__')" />

  <xsl:choose>
     <xsl:when
        test="$signalLookupDoc/signals/signal[./@name=$nameOfCompoundInstanceFromPort]">
        <xsl:text>yes</xsl:text>
     </xsl:when>
     <xsl:otherwise>
        <xsl:text>no</xsl:text>
     </xsl:otherwise>
  </xsl:choose>

    <xsl:variable name="nameOfCompoundInstanceFromString"
        select="substring-before('EssBypassValveAM__sdfsdf', '__')" />

    <xsl:choose>
        <xsl:when
            test="$signalLookupDoc/signals/signal[./@name=$nameOfCompoundInstanceFromString]">
            <xsl:text>yes</xsl:text>
        </xsl:when>
        <xsl:otherwise>
            <xsl:text>no</xsl:text>
        </xsl:otherwise>
    </xsl:choose>
    <xsl:text>;&#10;</xsl:text>

</xsl:template>

signalLookupDoc is defined as
<xsl:variable name="signalLookupDoc" select="document($param2)" />

и шаблон называется

<xsl:call-template name="portIsSigObjOrQuality">
            <xsl:with-param name="portName" select="'EssByPassValveAM__Enabled'" />
        </xsl:call-template>

Любой, кто может объяснить мне, почему первый поиск не удался и что я должен сделать, чтобы он работал?

1 Ответ

2 голосов
/ 22 июля 2011

Полагаю, разница в заглавных буквах (с учетом регистра)?

EssBypassValveAM

и

EssByPassValveAM

Обратите внимание на P против p.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...