Почему это случилось, если мы включали пробелы в таблицу стилей? Должны они были появиться в выводе? Разумеется, необязательно. Есть способы указать таблице стилей оставлять пробелы - они будут изучены в разделе Организация циклов и импорт - однако в некоторых случаях проще явно добавить текст в вывод (см. листинг 12).
Листинг 12. Добавление текста
...
<xsl:template match="ingredients/ingredient">
<xsl:value-of select="./qty"/><xsl:text>
</xsl:text>
<xsl:value-of select="./unit"/><xsl:text>
</xsl:text>
<xsl:value-of select="./food"/><br />
</xsl:template>
...
|
Тем самым мы позаботились о недостающих пробелах. Точно так же с помощью элемента text, можно добавить в шаблон любой произвольный текст. (Помните, что только текст, а не элементы типа разрыва страницы.) Результатом будет такой вывод, какой нам нужен(см. листинг 13).
Листинг 13. Окончательный вывод
<?xml version="1.0" encoding="UTF-8"?>
<html
xmlns="http://www.w3.org/TR/xhtml1/strict"><head><title>Recipe
</title></head><body><h2>Gush'gosh</h2><h3>
Ingredients:</h3><p>
1 pound hamburger<br/>
1 pound elbow macaroni<br/>
2 cups brown sugar<br/>
1 bag chopped onions<br/>
1 teaspoon dried dill<br/>
</p><h3>Directions:</h3><ol>
<li>Brown the hamburger.</li>
<li>Add onions and cook until transparent.</li>
<li>Add brown sugar and dill.</li>
<li>Cook and drain pasta.</li>
<li>Combine meat and pasta.</li>
</ol><h2>A balanced
breakfast</h2><h3>Ingredients:</h3><p>
1 cup cereal<br/>
1 glass orange juice<br/>
1 cup milk<br/>
2 slices toast<br/>
</p><h3>Directions:</h3><ol>
<li>Combine cereal and milk in bowl.</li>
<li>Add all ingredients to table.</li>
</ol></body></html>
|
Результат показан на рисунке 6.
Рисунок 6. Проблема отсутствующих пробелов решена
Далее вы узнаете, как добавлять на страницу определенную информацию с помощью XPath.
Основы XPath
Возможностьпреобразовывать данные в форму, в какой вы желаете их видеть, требует понимания языка маршрутов XML, или XPath, который позволяет контролировать, какие именно данные публикуются и/или отображаются. Данный раздел объясняет основные понятия XPath и показывает, как создавать простые выражения.
Что такое XPath?
Вы должны были заметить, что важной частью функционирования таблицы стилей является возможность выбрать конкретную часть документа. Например, если вы хотите отобразить инструкции, то нужно знать, как на них ссылаться. В XSLT мы ссылаемся на информацию, используя выражения XPath.
Выражение XPath может выбрать единственный узел или набор узлов, либо вернуть единственное значение, основанное на одном или более узлов в документе. До сих пор мы имели дело с очень простыми выражениями XPath, которые выбирают узел или узлы, спускаясь вниз по иерархической структуре. XPath предоставляет несколько способов для задания групп узлов на основании отношений, таких как родитель-потомок или предок-потомок. В данном руководстве мы изучим все эти отношения, называемые осями.
Вы также узнаете о некоторых более мощных функциях XPath и о предикатах- это в основном условные утверждения, которые можно добавлять в выражения. Например, в разделе Настройка контекста вы увидите, как выбирать все элементы recipe в документе; предикаты позволяют выбрать только конкретный элемент на основании конкретных критериев.
Наконец, вы узнаете о еще более мощных функциях, которые позволяют использовать многие типы логики, которые используются в процедурных программах.
Давайте начнем с изучения контекста выражения.
|