сделать отдельные значения в двух атрибутах тега xml с помощью xslt - PullRequest
0 голосов
/ 21 октября 2018

Я пытаюсь поймать разные значения двух разных тегов.Теги "@mandante" и "@visitante" в // jogo представляют страну, поэтому я хочу создать список со значениями разных стран.

что у меня есть

<xsl:key name="contry" match="//jogo/@mandante | //jogo/@visitante" use="text()"/>
...
<ul>
    <xsl:for-each select="(//jogo/@mandante | //jogo/@visitante)[generate-id()= generate-id(key('contry',text()))]">
        <li>
            <xsl:value-of select="."/>
        </li>
   </xsl:for-each>
</ul>

xmlпример файла

<grupo nome="A">
    <jogo data="1982-06-14T17:15:00+03:00" mandante="Itália" visitante="Polónia">
    </jogo>
    <jogo data="1982-06-15T17:15:00+03:00" mandante="Peru" visitante="Camarões">
    </jogo>
    <jogo data="1982-06-18T17:15:00+03:00" mandante="Itália" visitante="Peru">
        <eventos>
            <evento tipo="gol" time="mandante">
                <jogador>Conti</jogador>
                <minuto>18</minuto>
            </evento>
            <evento tipo="gol" time="visitante">
                <jogador>Díaz</jogador>
                <minuto>83</minuto>
            </evento>
        </eventos>
    </jogo>
</grupo>

1 Ответ

0 голосов
/ 21 октября 2018

@mandante и @visitante не являются тегами .Это атрибуты - и атрибуты не имеют дочерних текстовых узлов.Вот почему ваше выражение text() ничего не выбирает, как в определении key, так и в вызове key().

Также обратите внимание, что использование // в шаблоне совпадения ничего не дает.

Попробуйте вместо этого:

XSLT 1.0

<xsl:key name="country" match="jogo/@mandante | jogo/@visitante" use="."/>
...
<ul>
    <xsl:for-each select="(//jogo/@mandante | //jogo/@visitante)[generate-id()= generate-id(key('country', .))]">
        <li>
            <xsl:value-of select="."/>
        </li>
   </xsl:for-each>
</ul>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...