CSS пространство в имени и хлопотном XSLT - PullRequest
0 голосов
/ 14 июня 2011

Я пытаюсь создать XSLT, в котором перечислены фильмы, и оформляю заголовки так, чтобы у каждого заголовка был свой цвет, затем я выбираю заголовок с интерполяцией (XPath?)

Вот файл XSL:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
    <html>
        <head>
            <title>Videos</title>
            <style>
                table, tr, td { border: thin black solid }
                th { background-color: #AAFFAA }
                .Daredevil { color: red; }

                /* Look at those spaces! Hrmphf! */
                .Drag Me To Hell { color: green; }
            </style>
        </head>
        <body>
            <table>
                <tr><th>Movies</th></tr>
                <xsl:apply-templates select="//movie"/>
            </table>
        </body>
    </html>
</xsl:template>
<xsl:template match="//movie[not(@title=preceding::movie/@title)]">

    <!-- Title should be the one of the titles in the CSS -->
    <tr class="{@title}"><td><xsl:value-of select="@title"/></td></tr>

</xsl:template>
</xsl:stylesheet>

Проблема, однако, заключается в том, что некоторые заголовки фильмов содержат пробелы.Могу ли я иметь пробелы в названии?Если нет, есть ли какие-либо обходные пути (помимо подчеркивания или тому подобного в XML)?


Обновление:

Хорошо, я понимаю, что это невозможно,На данный момент я использую translate(@title, ' ', '-'), который работает, когда CSS-имена разделены -.Я все еще хотел бы знать, есть ли лучший способ сделать это.:)

Ответы [ 4 ]

5 голосов
/ 14 июня 2011

class="Drag me to" создает элемент с тремя различными классами.

Селектор .Drag.Me.To сопоставит элементы со всеми тремя классами.

Однако он будет сопоставлять их в любом порядкене будет считать дубликаты.

3 голосов
/ 14 июня 2011

CSS классы / идентификаторы не могут содержать пробелы.

Поскольку пробел используется для разделения разных классов.

Вам придется разрешить (-)

3 голосов
/ 14 июня 2011

Нет, в именах правил CSS не должно быть пробелов

2 голосов
/ 14 июня 2011

Мне немного странно связывать CSS с фактическим содержанием данных таким образом.Кажется, ваша таблица стилей заранее знает, что она ожидает найти в файле данных, и это похоже на плохой дизайн - она ​​должна быть общей.Почему бы не ввести косвенное отношение от заголовка фильма к классам CSS:

<xsl:variable name="movieStyles">
  <movie title="Drag me to hell" css-class="hell-class"/>
  <movie ...
</xsl:variable>

, затем <tr class="{f:css-class-for-title(@title)}" ...

, где функция f: css-class-for-title использует данные поискасопоставить названия фильмов с классами CSS.

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