Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > XML, XSL > смешанная ссылка href в xsl


Автор: yalo 12.8.2012, 21:55
Не могу сообразить как надо оформить xsl, чтобы не было ошибки:
Код

Warning: DOMDocument::load() [domdocument.load]: attributes construct error in file:///Z:/...*.xsl, line: 7 in Z:\home\...\www\...*.php on line 56
Warning: DOMDocument::load() [domdocument.load]: Couldn't find end of Start Tag a line 7 in file:///Z:/...*.xsl, line: 7 in Z:\home\...*.php on line 56

Warning: DOMDocument::load() [domdocument.load]: Opening and ending tag mismatch: value-of line 7 and a in file:///Z:/...*.xsl, line: 7 in Z:\home\...*.php on line 56

Вот шаблон 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="/">
<table>
    <tr>
    <xsl:for-each select="/head_tbl/td_cell">
        <td><a href="index.php?sort="<xsl:value-of select="@name_tbl">&typefld="<xsl:value-of select="@typefld">"><xsl:value-of select="@name"/></a></td>
    </xsl:for-each>
    </tr>
    <tr>
    <xsl:for-each select="/tbl/elem">
        <tr>
            <xsl:for-each select="*">
                <td><xsl:value-of select="*"/></td>
            </xsl:for-each>
        </tr>
    </xsl:for-each>
    </tr>
</table>
</xsl:template>
</xsl:stylesheet>

А вот xml:
Код

<?xml version="1.0" encoding="utf-8"?>
<head_tbl>
    <td_cell name_tbl="id" ord="1" name="Уник. идентиф." typefld="0" sortflag="1" link=""/>
    <td_cell name_tbl="login" ord="2" name="Логин" typefld="2" sortflag="1" link=""/>
    <td_cell name_tbl="surname" ord="3" name="Фамилия" typefld="2" sortflag="1" link=""/>
    <td_cell name_tbl="name1" ord="4" name="Имя" typefld="2" sortflag="1" link=""/>
    <td_cell name_tbl="name2" ord="5" name="Отчество" typefld="2" sortflag="1" link=""/>
    <td_cell name_tbl="passw" ord="6" name="Пароль" typefld="4" sortflag="0" link=""/>
</head_tbl>
<tbl>
    <elem>
        <id>1</id>
        <login>ivanova</login>
        <surname>Иванова</surname>
        <name1>Ольга</name1>
        <name2>Владимировна</name2>
        <passw>ldrkgjlrjkth </passw>
    </elem>
    <elem>
        <id>2</id>
        <login>petrova</login>
        <surname>Петрова</surname>
        <name1>Анастасия</name1>
        <name2>Михайловна</name2>
        <passw>kldhgkrh </passw>
    </elem>
</tbl>


После преобразования должно получится что-то вроде этого:
Код

<table>
    <tr>
        <td><a href="index.php?ord=id&typefld=0">Уник. идентиф.</a></td>
        <td><a href="index.php?ord=login&typefld=2">Логин</a></td>
        <td><a href="index.php?ord=surname&typefld=2">Фамилия</a></td>
        <td><a href="index.php?ord=name1&typefld=2">Имя</a></td>
        <td><a href="index.php?ord=name2&typefld=2">Отчество</a></td>
        <td>Пароль</td>
    </tr>
    <tr>
        <td>1</td>
        <td>ivanova</td>
        <td>Иванова</td>
        <td>Ольга</td>
        <td>Владимировна</td>
        <td>Петрова</td>
    </tr>
    <tr>
        <td>2</td>
        <td>petrova</td>
        <td>Петрова</td>
        <td>Анастасия</td>
        <td>Михайловна</td>
        <td>kldhgkrh</td>
    </tr>
</table>

Я понимаю, что в строчке шаблона:
Код

        <td><a href="index.php?sort="<xsl:value-of select="@name_tbl">&typefld="<xsl:value-of select="@typefld">"><xsl:value-of select="@name"/></a></td>

надо как-то корректно обработать кавычки, амперсанды, знаки вопроса и возможно "крышки" < и >. Но я не могу сообразить, как это сделать. Подскажите, пожалуйста.

Автор: diadiavova 12.8.2012, 22:29
Совсем недавно такой же вопрос был
http://forum.vingrad.ru/forum/topic-354991.html

Автор: magelan 17.10.2012, 13:04
Еще развернутая нотация бывает полезна, когда необходимы проверки:
Код

<a>
    <xsl:attribute name="HREF">
        <xsl:text>index.php?sort=</xsl:text>
        <xsl:value-of select="@name_tbl">
        <xsl:text>&amp;typefld=</xsl:text>
        <xsl:value-of select="@typefld">
    </xsl:attribute>
    <xsl:value-of select="@name"/>
</a>

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)