| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > XML, XSL > Отступы, пробелы и переносы строк в XLST |
| Автор: Greendrake 10.2.2006, 23:50 |
| Существуют ли правила/законы по которым отступы, пробелы и переносы строк в XSL-шаблоне переносятся в результат трансформации? Ещё вот http://www.artlebedev.ru/studio/vacancy/web_tech_3/ нашёл такой вопрос: Что здесь не так и как это исправить? <xsl:template match="para"> <a href="{@href}"> clickme </a> </xsl:template> Думаю здесь сабж и имеется ввиду. Какой ответ? P.S. Исходник вопроса лучше посмотреть по ссылке, т. к. тут отступы не отображаются |
| Автор: Beard 11.2.2006, 02:49 |
| Цитата: Текстовый узел сохраняется если имеет место какое-либо из следующих условий: * Название элемента, являющегося родителем данного текстового узла, находится в перечне названий элементов, сохраняющих пробельные символы. * Текстовый узел содержит хотя бы один непробельный символ. Как и в XML, пробельным символом считаются #x20, #x9, #xD и #xA. * Элемент, являющийся предком этого текстового узла, имеет атрибут xml:space со значением preserve и нет более близких элементов-предков, имеющих xml:space со значением default. В остальных случаях текстовый узел вычищается. Атрибуты xml:space из дерева не вычищаются. Замечание: Это подразумевает, что если для фиксированного конечного элемента был указан атрибут xml:space, то он будет включен в результат. В случае со стилями перечень названий элементов, сохраняющих пробельные символы, состоит лишь из xsl:text. <!-- Category: top-level-element --> <xsl:strip-space elements = tokens /> <!-- Category: top-level-element --> <xsl:preserve-space elements = tokens /> Для исходных документов перечень названий элементов, сохраняющих пробельные символы, задается элементами верхнего уровня xsl:strip-space и xsl:preserve-space. Каждый из этих элементов имеет атрибут elements, значением которого является перечень NameTest-ов (через пробельный символ). Изначально набор названий элементов, сохраняющих пробельные символы, содержит названия всех элементов. Если название элемента совпадает с NameTest в элементе xsl:strip-space, то он удаляется из перечня названий элементов, сохраняющих пробельные символы. Если название элемента совпадает с NameTest в элементе xsl:preserve-space, то оно добавляется к перечню названий элементов, сохраняющих пробельные символы. |
| Автор: Greendrake 11.2.2006, 17:13 | ||
Это всё хорошо, но что, собственно, есть текстовый узел? Не уж то несколько пробелов, расположенных между <a href="{@href}> и clickme считаются узлом?? А может ещё, каждый из этих пробелов - узел ИМХО, узлом-то должен считаться тег. Тем не менее, вышеописанные пробелы вроде бы вычищаются. |
| Автор: OstinStar 21.3.2006, 21:48 |
| У меня такая проблема: при отображении xml в IE6 все, что находится в cdata пишется в одну строчку - без табуляций и переносов на след. строку. Это происходит после прикрепления xsl к xml. А мне нужно, чтобы cdata отображалась также как без xsl. |
| Автор: Ignat 23.3.2006, 19:45 |
| OstinStar, думаю, <pre></pre> спасет. |
| Автор: OstinStar 24.3.2006, 07:33 |
| Спасибо, уже спасло |