XSLT и `foreach` - PullRequest
       10

XSLT и `foreach`

0 голосов
/ 01 ноября 2011

У меня есть следующая строка xml, которую я пытаюсь преобразовать с использованием XSLT, но у меня возникли проблемы.Строка:

<app>
<lem>text</lem>
<rdg wit="V" type="add.">text1</rdg>
<rdg wit="S" type="add.">text2</rdg>
<rdg wit="SV" type="add.">text3</rdg>
</app>

У меня есть несколько таких app elements, и в них может быть от 1 до 4 rdg элементов, поэтому я пытаюсь написать оператор foreach вforeach заявление, но оно не работает.

Я хочу сказать:

<xsl:for-each select="//tei:app">
    <li><xsl:value-of select="tei:lem"/><xsl:text>] </xsl:text>
        <xsl for-each select="tei:rdg"> <!--I hoping this would loop through each <rdg> within a given <app> element -->
            <xsl:value-of select="//tei:rdg"/>
            <xsl:value-of select="//tei:rdg/@type"/>
            <xsl:value-of select="//tei:rdg/@wit"/>
        </xsl:for-each>
    </li>
</xsl:for-each>

Но сейчас это не работает.В нынешнем виде - это делает правильное количество циклов, но для каждого экземпляра rdg я получаю значение кулака rdg.Но если я уберу двойную косую черту в трех value-of элементах, то я не получу никаких значений.

Можете ли вы определить, что я делаю неправильно?Иногда я сильно запутываюсь из-за косой черты, двойной косой черты, без использования косой черты в xpath - могу я там испортиться?

Спасибо за вашу помощь.

1 Ответ

1 голос
/ 01 ноября 2011

Попробуйте это:

<xsl:for-each select="//tei:app">
    <li><xsl:value-of select="tei:lem"/><xsl:text>] </xsl:text>
        <xsl for-each select="tei:rdg"> <!--I hoping this would loop through each <rdg> within a given <app> element -->
        <xsl:value-of select="."/>
        <xsl:value-of select="@type"/>
        <xsl:value-of select="@wit"/>
        </xsl:for-each>
    </li>
</xsl:for-each>

В вашем внутреннем цикле ваш узел current () является узлом tei: rdg. Так . доступ к его содержимому, а @ доступ к различным атрибутам.

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