Простой вопрос по XSLT

Тема в разделе "WASM.HEAP", создана пользователем _DEN_, 17 июн 2009.

  1. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    Как записать xsl:value-of, если оно должно стоять в аттрибутах HTML-тега в кавычках?

    Пример, вывод ссылки:

    <a href="<xsl:value-of select="url" />"><xsl:value-of select="title" /></a>

    Вот так не работает. Как должно быть?
     
  2. bsnake

    bsnake New Member

    Публикаций:
    0
    Регистрация:
    11 сен 2005
    Сообщения:
    91
    а если попробовать заменить " на &quot; внутри href="" ?
     
  3. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    bsnake

    Не, получается. Если заменить на HTML/XML entities, то он в урл так xsl:value-of ... и подставит :dntknw:
     
  4. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    Выяснил.

    <a href="{url}"> - вот так работает.
     
  5. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    Еще вопрос :)

    Постарался максимально успростить.

    xml:
    Код (Text):
    1. <bibliography>
    2.     <year value="2005">
    3.         <book>
    4.             <title>C++ for dummies</title>
    5.         </book>
    6.         <book>
    7.             <title>Delphi for idiots</title>
    8.         </book>
    9.     </year>
    10.     <year value="2009">
    11.         <book>
    12.             <title>Learn japaneese in 21 days</title>
    13.         </book>
    14.         <book>
    15.             <title>Windows7 is simple</title>
    16.         </book>
    17.         <book>
    18.             <title>Linux howto</title>
    19.         </book>
    20.     </year>
    21. </bibliography>
    xsl:
    Код (Text):
    1. <xsl:stylesheet version = '1.0' xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>
    2.     <xsl:template match="/">
    3.         <table>
    4.             <xsl:for-each select="bibliography/year">
    5.                 <tr>
    6.                     <td>
    7.                         <xsl:value-of select="@value" />
    8.                         <ul>
    9.                             <xsl:for-each select="book">
    10.                                 <li><xsl:value-of select="position()" />. <xsl:value-of select="title" /></li>
    11.                             </xsl:for-each>
    12.                         </ul>
    13.                     </td>
    14.                 </tr>
    15.             </xsl:for-each>
    16.         </table>
    17.     </xsl:template>
    18. </xsl:stylesheet>
    Выдача будет такая:

    Код (Text):
    1. 2005
    2.     1. C++ for dummies
    3.     2. Delphi for idiots
    4.  
    5. 2009
    6.     1. Learn japaneese in 21 days
    7.     2. Windows7 is simple
    8.     3. Linux howto
    А мне надо чтобы нумерация продолжалась, то есть вот так:

    Код (Text):
    1. 2005
    2.     1. C++ for dummies
    3.     2. Delphi for idiots
    4.  
    5. 2009
    6.     3. Learn japaneese in 21 days
    7.     4. Windows7 is simple
    8.     5. Linux howto
    Тоесть как-то обратиться к более верхнему счетчику чтоли... Как это сделать?
     
  6. maxdiver

    maxdiver Max

    Публикаций:
    0
    Регистрация:
    18 июл 2006
    Сообщения:
    308
    Адрес:
    Саратов
    Наверно не UL, а OL? Для OL есть параметр start=число, задающий номер, с которого начнётся нумерация.
     
  7. maxdiver

    maxdiver Max

    Публикаций:
    0
    Регистрация:
    18 июл 2006
    Сообщения:
    308
    Адрес:
    Саратов
    Есть ещё способ для каждого LI указывать value=число.
    А других способов контролировать нумерацию afaik в HTML нет
     
  8. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    maxdiver

    Да не в HTML тут дело. Дело в том, что нумерацию нужно вывести средствами именно XSLT, а не HTML. Вместо списка там вообще будет таблица.