2015-02-09 3 views
0

Это аналогичный вопрос Style inline text along with nested tags with XSLT, но я не могу комментировать, чтобы получить разъяснения, поэтому я расскажу о своем конкретном сценарии здесь. Я в принципе есть документ XML со следующей структурой:Стилирование встроенных XML-тегов с XSLT

<book> 
    <chapter> 
     <para>This is some text about <place>New York</place></para> 
    </chapter> 
</book> 

Я использую XSLT для вывода XHTML из моего файла XML, и я хочу, чтобы иметь возможность поставить пролетные тег или что-то вокруг содержания в месте тега пример выше. Цель состоит в том, чтобы я мог стилизовать эти сегменты текста с помощью CSS. Следуя примеру я, указанным выше, я добавил следующее:

<xsl:template match="book/chapter/para/place"> 
    <span class="place"> 
     <xsl:apply-templates/> 
    </span> 
</xsl:template> 

Когда я загрузить документ XML в браузере, я получаю сообщение об ошибке: «: разборе таблицы стилей XSLT не удалось Ошибка при загрузке таблицы стилей.» (таблица стилей правильно загружалась, прежде чем я добавил эту часть)

Я предполагаю, что мне не хватает базового понимания того, как использовать xsl: apply-templates. Я был бы признателен, если бы кто-то мог указать мне в направлении выяснения этого.

Спасибо!

+1

"* Я добавил это: *" Вы добавили это к чему? Покажите нам свою таблицу стилей, пожалуйста, чтобы мы могли воспроизвести проблему. - P.S. Не указывает ли сообщение вашего браузера на строку/столбец, где произошла ошибка? –

ответ

0

матч:

<xsl:template match="book/chapter/para/"> 

применяет шаблоны для всех детей из place элемента, а не сам place.

Использование select в apply-templates вместо:

<xsl:template match="/"> 
    <xsl:apply-templates select="book/chapter/para/place"/> 
</xsl:template> 

In the absence of a select attribute, the xsl:apply-templates instruction processes all of the children of the current node, including text nodes.

A select attribute can be used to process nodes selected by an expression instead of processing all children. The value of the select attribute is an expression. The expression must evaluate to a node-set.

Ссылки

Смежные вопросы