Я хотел бы обработать элемент в моем исходном XML-файле с использованием XSLT 2.0 (Saxon 9.1.0.7). Если кадр элемент содержит визуализатор атрибут Мне нужно отправить это из кадра шаблона в другой именованный шаблон, в противном случае я хотел бы послать рендерер значение по умолчанию для имени шаблона.Вызов именованного шаблона
Таким образом, в исходном файле XML я мог бы иметь следующее, в этом случае я хотел бы отправить значение по умолчанию для имени шаблона в качестве параметра:
<frame id="menu_frame_1">
Или, если визуализатора атрибута определяется в исходном XML-документ, то я хотел бы передать, что вместо значения по умолчанию:
<frame id="menu_frame_1" renderer="KONtx.element.Container">
проблема, которую я имею, я не знаю, как условно выбрать либо по умолчанию, или определенный атрибут если он существует и передать его в названный шаблон. Я попытался использовать xsl: выберите в шаблоне , но это запрещено. Кроме того, я бы переместил выбор за пределами шаблона и установил переменную с значением по умолчанию или атрибутом, но переменные неизменяемы, поэтому я не уверен, как обращаться с этим делом. Ниже приведен шаблон шаблона , и именованный шаблон, который я пытаюсь вызвать. Любая помощь приветствуется. Благодарю.
<xsl:template match="frame">
<!-- Call new object start named template below -->
<xsl:call-template name="newObjectStart">
<xsl:with-param name="id"><xsl:value-of select="@id" /></xsl:with-param>
<xsl:choose>
<xsl:when test="@renderer">
<xsl:with-param name="renderer">
<xsl:value-of select="@renderer" />
</xsl:with-param>
</xsl:when>
<xsl:otherwise>
<xsl:with-param name="renderer">KONtx.element.Container</xsl:with-param>
</xsl:otherwise>
</xsl:choose>
</xsl:call-template>
...
</xsl:template>
<!-- New Object Start Named Template -->
<xsl:template name="newObjectStart">
<xsl:param name="id" />
<xsl:param name="renderer" />
<xsl:text>var </xsl:text>
<xsl:value-of select="$id" />
<xsl:text> = </xsl:text>
<xsl:text>new </xsl:text>
<xsl:value-of select="$renderer" />
<xsl:text>({</xsl:text>
</xsl:template>
Спасибо, это работает и имеет смысл. Я пытаюсь заставить свою голову обернуться, как использовать xslt. – Steve