Как обратиться к контексту входного документа в контексте внешнего документа? - PullRequest
1 голос
/ 06 июня 2011
<xsl:template match="extnode">
    <xsl:if test="/topnode/value">

    </xsl:if>
</xsl:template>

<xsl:template match="/">
     <xsl:apply-template select="document('external.xml')/exttopnode/extnode"/>
</xsl:template>

В приведенном выше примере контекст в строке 2 (xsl: if) будет относиться к документу ('external.xml').Но то, что я действительно хочу, это проверить элемент из входного XML.Есть ли способ ссылки на входной документ?

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

1 Ответ

2 голосов
/ 06 июня 2011

В приведенном выше примере контекст в строке 2 (xsl:if) будет соответствовать document('external.xml').Но то, что я действительно хочу, это проверить элемент из входного XML.Есть ли способ обратиться к входному документу?

Всякий раз, когда я нахожусь в такой ситуации, я предпочитаю иметь глобальную переменную (скажем, с именем $vMainDoc), котораядоступны в любом месте всего преобразования без необходимости передавать параметр:

<xsl:variable name="vMainDoc" select="/"/>

Тогда ваш код станет :

<xsl:template match="extnode">
    <xsl:if test="$vMainDoc/topnode/value">

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