XSLT вложенный для каждого с разделенным запятыми списком - PullRequest
1 голос
/ 19 сентября 2011

У меня есть XML-файл со списком хобби:

<?xml version="1.0" encoding="utf-8"?>
<users>
  <user>
    <fname>somename</fname>
    <hobbies>
      <hobby>Movie</hobby>
      <hobby>Trekking</hobby>
    </hobbies>
  </user>
</users>

XSL-файл:

<?xml version="1.0" encoding="iso-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:template match="/">
    <html>
      <body>
        <xsl:for-each select="users/user">
          <h2>
            <xsl:value-of select="fname" />
          </h2>
          <h3>Hobbies :</h3>
          <xsl:for-each select="hobbies">
            <xsl:value-of select="." />
                <xsl:if test="position() != last()">
                    <xsl:text> , </xsl:text>
                </xsl:if>
          </xsl:for-each>
        </xsl:for-each>
      </body>
    </html>
  </xsl:template>
</xsl:stylesheet>

Здесь я использовал

            <xsl:if test="position() != last()">
                <xsl:text> , </xsl:text>
            </xsl:if>

для создания запятых вмежду списком хобби

Но значения отображаются без запятой.

Я проверяю это на http://www.w3schools.com/xsl/'s tryit editor.

Что здесь не так?Что мне делать?

1 Ответ

3 голосов
/ 19 сентября 2011

У вас есть опечатка, я думаю: <xsl:for-each select="hobbies/hobby">

Обновление

Правильный XSLT:

<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:template match="/">
        <html>
            <body>
                <xsl:for-each select="users/user">
                    <h2>
                        <xsl:value-of select="fname" />
                    </h2>
                    <h3>Hobbies :</h3>
                    <xsl:for-each select="hobbies/hobby">
                        <xsl:value-of select="." />
                        <xsl:if test="position() != last()">
                            <xsl:text> , </xsl:text>
                        </xsl:if>
                    </xsl:for-each>
                </xsl:for-each>
            </body>
        </html>
    </xsl:template>
</xsl:stylesheet>

Выход:

<html>
  <body>
    <h2>somename</h2>
    <h3>Hobbies :</h3>Movie , Trekking</body>
</html>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...