XSLT: использование другого способа обработки в текущем способе обработки - PullRequest
0 голосов
/ 03 мая 2010

Ниже я пытаюсь сопоставить определенные узлы.

<xsl:template match="nodes">    
    <element>
        <xsl:apply-templates select="nodes" mode="different" />
    </element>
</xsl:template>

Теперь существует несколько способов обработки одних и тех же узлов. Я хочу использовать этот другой способ обработки в пределах текущего способа обработки. Вот почему я выполняю apply-templates для того же выбора, который nodes, однако mode теперь другой.

Вот как может выглядеть другой режим:

    <xsl:template match="nodes" mode="different">
<!-- another way of processing these nodes -->
</xsl:template>

Теперь это не работает. Обрабатывается только первый тип обработки, а вызов apply-templates просто не применяется.

Чтобы быть более конкретным:

<xsl:template match="Foundation.Core.Association.connection">
    <xsl:for-each select="Foundation.Core.AssociationEnd">
        <someElement>
                <xsl:apply-templates select="Foundation.Core.Association.connection" mode="different" />
        </someElement>      
    </xsl:for-each>
</xsl:template>

Как видите, я выбираю Foundation.Core.Association.connection. Конечно, это неправильно, но как мне обратиться к этому элементу, учитывая текущий элемент и положение? Учитывая Дерек его комментарий, это должно сделать это.

Что я делаю не так, как я могу получить то, что хочу, используя XSLT? Какой может быть другой подход к решению этой проблемы?

Спасибо.

Ответы [ 2 ]

1 голос
/ 03 мая 2010

, если «узлы» ссылаются на тот же точный набор узлов в содержащем совпадении, попробуйте:

<xsl:template match="nodes">    
    <element>
        <xsl:apply-templates select="." mode="different" />
    </element>
</xsl:template>
0 голосов
/ 03 мая 2010
<xsl:template match="Foundation.Core.Association.connection">

    <xsl:for-each select="Foundation.Core.AssociationEnd">

        <someElement> 
                <xsl:apply-templates

выберите = "Foundation.Core.Association.connection" mode = "Different" />

Как видите, я выбираю Foundation.Core.Association.connection. Конечно, это неправильно, но как мне обратитесь к этому элементу, учитывая текущий элемент и позиция?

Используйте :

<xsl:apply-templates select=".." mode="different" />

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

Конечно, скорее всего, эта запутанная обработка вообще не нужна , что подтвердилось бы, если бы вы смогли показать больше XML-документа и сформулировать проблему более лаконичным образом.

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