У меня есть два шаблон, как это ... один, чтобы создать нормальное имя пакета, а другой, добавляемый «-Non» с именем, если он проходит определенные условия, как показаноКак звонить шаблон из другого шаблона в XSLT 1.0
<xsl:template match="text()" name="checkForAgency">
<xsl:param name="Name"/>
<xsl:param name="Agency"/>
<xsl:if test="contains($Agency,'AG') ">
<xsl:value-of select="concat($Name,' - Non')"/>
</xsl:if>
</xsl:template>
<xsl:template match="text()" name="createPackageName">
<xsl:param name="Type"/>
<xsl:if test="contains($Type,'NEW')">
<xsl:value-of select="concat('New',' Goal')"/>
</xsl:if>
<xsl:if test="contains($Type,'AMD')">
<xsl:value-of select="concat('Amended',' Goal')"/>
</xsl:if>
<xsl:if test="contains($Type,'REN') or contains($Type,'ARN')">
<xsl:value-of select="concat('Renewal',' Goal')"/>
</xsl:if>
</xsl:template>
Вызов этих шаблонов из
<xsl:variable name="NonAgencyPackageName">
<xsl:call-template name="createPackageName">
<xsl:with-param name="Type" select="ID"/>
</xsl:call-template>
</xsl:variable>
<xsl:element name="PackageName">
<xsl:call-template name="checkForAgency">
<xsl:with-param name="Name" select="$NonAgencyPackageName"/>
<xsl:with-param name="Agency" select="Output"/>
</xsl:call-template>
</xsl:element>
Если идентификатор «New», имя пакета должно быть новая цель, и если выход имеет «AG», то имя должно быть Новый Goal- Non. Иное имя должно быть новой целью. Я хочу только два отдельных шаблона. Сейчас я получаю пустое значение. Пожалуйста, помогите мне в достижении этого и как его исправить?
шаблоны с двумя символами 'match =' и 'name =' Я никогда не видел - он либо имеет 'match =' (и, возможно, 'mode = ') или' name = ', но не' match = ', тогда предложите снова вытащить свою книгу xslt :) Или покажите (отредактируйте вопрос), что ваш вход и ожидаемый выход xmls выглядят как –
@StefanHegny имеет право предложить вам проверьте свои шаблоны: если вы не делаете что-то очень умное в остальной части таблицы стилей (и если бы вы были такими умными, у вас не было бы этого вопроса), бессмысленно иметь атрибут 'match' для названных шаблонов. Не незаконно (шаблоны с 'match' и' name' просто прекрасны), но в этом конкретном случае бессмысленно и, таким образом, запутывает программиста по обслуживанию. –