Как выбрать элемент в параметре шаблона XSLT? - PullRequest
0 голосов
/ 04 октября 2011

У меня есть следующий шаблон XSLT:

    <xsl:template name="foo">
    <xsl:param name="arg1">0</xsl:param>
    <xsl:param name="arg2" />
    <xsl:param name="arg3" />
    <xsl:call-template name="bar">
        <xsl:with-param name="arg1"><xsl:value-of select="$arg1" /></xsl:with-param>
        <xsl:with-param name="arg2"><xsl:copy-of select="$arg2" /></xsl:with-param>
        <xsl:with-param name="arg3"><!-- what do I put here? --></xsl:with-param>
    </xsl:call-template>
</xsl:template>

Теперь arg3 - это фрагмент кода xml. Я только хочу выбрать элемент в arg3, чтобы перейти к bar как arg3. Как выбрать отдельные узлы из параметра? Я пытался, но это не сработало.

Пожалуйста, не предлагайте отправлять значение arg3 / qux вместо arg3. Для этого есть веская причина, но это выходит за рамки этого вопроса.

Ответы [ 2 ]

1 голос
/ 04 октября 2011

Это зависит от того, как выглядит фрагмент XML, но вы можете сделать что-то вроде этого:

<xsl:value-of select="$arg3/first_name" />

РЕДАКТИРОВАТЬ

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt" 
    xmlns:ext="http://exslt.org/common" exclude-result-prefixes="ext msxsl">

    <xsl:template match="/">               
        <xsl:value-of select="ext:node-set($arg3)/first_name" />
    </xsl:template>

</xsl:stylesheet>
0 голосов
/ 04 октября 2011

Просто обработайте $ arg3 как узел, у меня работает.

<xsl:call-template name="bar">
    <xsl:with-param name="arg1"><xsl:value-of select="$arg1" /></xsl:with-param>
    <xsl:with-param name="arg2"><xsl:copy-of select="$arg2" /></xsl:with-param>
    <xsl:with-param name="arg3" select="$arg3/sub-node"/>
</xsl:call-template>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...