Мне нужно определить, существует ли элемент с атрибутом имени, установленным на определенное значение.Документ, в котором мне нужно искать, не тот, к которому применяется таблица стилей.Я хочу передать строковое значение для поиска в качестве параметра в шаблон.Поиск не удается, когда я это делаю, но успешно, когда я создаю локальную переменную в шаблоне и использую эту переменную в предикате поиска.Я не могу понять, почему.
Я пробовал это с двумя различными движками 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>; </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>
Любой, кто может объяснить мне, почему первый поиск не удался и что я должен сделать, чтобы он работал?