Teaching Reading
5.3.8.1. Элемент xsl:element
Каждому элементу документа XML соответствует узел элемента. Дочерними узлами узла элемента могут быть узлы его дочерних элементов, а также узлы комментариев, инструкций по обработке и текстовые узлы, которые представляют его непосредственное содержимое. Следует отметить, что узлы атрибутов не считаются дочерними узлами своего элемента, они лишь только ассоциируются с ними.
Узлы элементов в выходящем документе можно создавать с помощью литеральных элементов. Однако в тех случаях, когда требуется создать элемент с заранее неизвестным (например, вычисляемым во время выполнения) именем или создать элемент, принадлежащий пространству имен, известному обрабатывающему процессору, литеральные элементы не подходят.
Для создания элемента с вычисляемым названием используется элемент xsl:element, который имеет следующий синтаксис:
<xsl:element
name="имя"
namespace="пространство-имен"
inherit-namespaces="yes" | "no"
use-attribute-sets="имена"
type="имя-типа"
validation="strict" | "lax" | "preserve" | "strip"
>
<!--
Содержимое: конструктор последовательности
-->
</xsl:element>
Здесь обязательный атрибут name указывает имя создаваемого элемента. Этот атрибут может содержать шаблон значения, а значит, имя элемента может быть вычислено во время выполнения. Все остальные атрибуты элемента являются необязательными.
Атрибут namespace указывает URI пространства имен создаваемого элемента. Точно так же, как и name, этот атрибут может содержать шаблон значения, что позволяет вычислять пространство имен создаваемого элемента при помощи выражений.
В качестве значений атрибутов name и namespace могут быть использованы вычисляемые выражения, т.е. выражения, заключенные в фигурные скобки "{" и "}".
Атрибут inherit-namespaces задает ("yes") или отменяет ("no") наследование узлов пространства имен для потомков создаваемого элемента. По умолчанию значение этого атрибута равно "yes".
Атрибут use-attribute-sets перечисляет (через пробел) имена наборов атрибутов, которые должны быть включены в создаваемый элемент.
Атрибут type задает проверку создаваемого элемента на соответствие простому или комплексному типу, заданному в значении атрибута и определенному в схеме документа.
Атрибут validation определяет действия по проверке действительности создаваемого элемента. Значение "strip" этого атрибута указывает, что новый элемент и все содержащиеся в нем узлы должны иметь тип xs:untyped. Значение "preserve" указывает, что копируемые элементы сохраняют свой тип, а создаваемые элементы будут иметь тип xs:untyped. Значение "strict" указывает, что создаваемые и копируемые элементы должны строго соответствовать своему типу, определенному в схеме документа (в случае такого несоответствия выдается сообщение об ошибке). Значение "lax" аналогично значению "strict", за исключением того, что в случае несоответствия сообщения об ошибке не выдается, а создаваемые или копируемые элементы будут иметь тип xs:untyped.
Атрибуты type и validation являются взаимоисключающими, т.е. в элементе может быть задан только один из этих атрибутов.
Содержимым xsl:element является конструктор последовательности, который создается процессором и затем включается в создаваемый элемент.
5.3.8.2. Элемент xsl:attribute
Атрибутам того или иного элемента соответствуют узлы атрибутов. Считается, что узел элемента является родителем узла своего атрибута, но вместе с тем узел атрибута не является дочерним узлом узла его элемента. Такая ситуация отличает дерево документа в XSLT от дерева в DOM – отношение между элементом и атрибутом не является отношением наследования, а отношением ассоциации. Говорят, что узел атрибута ассоциируется с узлом элемента.
Узел атрибута задается конструкцией вида:
<xsl:attribute
name="имя"
namespace="пространство-имен"
select="выражение"
separator?="строка"
type="имя-типа"
validation="strict" | "lax" | "preserve" | "strip"
>
<!--
Содержимое: конструктор последовательности
-->
</xsl:attribute>
Использование элементов xsl:attribute и xsl:element во многом аналогично. Обязательный атрибут name задает имя атрибута, а все остальные атрибуты также являются необязательными.
Атрибут namespace задает URI пространства имен создаваемого атрибута.
Атрибут select задает строковое значение нового атрибута (альтернативным является задание значения атрибута в конструкторе последовательности элемента xsl:attribute).
Атрибут separator задает символы-разделители между элементами сгенерированной последовательности при их преобразовании в результирующее строковое значение. По умолчанию таким разделителем является одиночный пробел. Если в качестве разделителя задана пустая строка, разделителей между элементами не будет.
В качестве значений атрибутов name, namespace и separator могут быть использованы вычисляемые выражения, т.е. выражения, заключенные в фигурные скобки "{" и "}".
Атрибут type задает проверку создаваемого атрибута на соответствие простому или комплексному типу, заданному в значении атрибута и определенному в схеме документа.
Атрибут validation определяет действия по проверке действительности создаваемого узла документа. Значение "strip" этого атрибута указывает, что новый атрибут должен иметь тип xs:untypedAtomic. Значение "preserve" указывает, что копируемые атрибуты сохраняют свой тип, а создаваемые атрибуты будут иметь тип xs:untypedAtomic. Значение "strict" указывает, что создаваемые и копируемые атрибуты должны строго соответствовать своему типу, определенному в схеме документа (в случае такого несоответствия выдается сообщение об ошибке). Значение "lax" аналогично значению "strict", за исключением того, что в случае несоответствия сообщения об ошибке не выдается, а создаваемые или копируемые атрибуты будут иметь тип xs:untypedAtomic.
Атрибуты type и validation являются взаимоисключающими, т.е. в элементе может быть задан только один из этих атрибутов.
Если атрибут создается в элементе, который уже имеет атрибут с таким же именем, старый атрибут будет переопределен новым значением.
Использование элемента xsl:attribute имеет следующие основные особенности:
· атрибуты могут создаваться только в узлах элементов (если атрибут создается в узле, который не является узлом элемента, процессор может либо выдать ошибку, либо проигнорировать создаваемый атрибут);
· атрибуты могут содержать только текстовые узлы (процессор может либо выдать ошибку, либо проигнорировать нетекстовые узлы);
· узлы атрибутов должны быть первыми узлами, которые создаются в элементах (XSLT не разрешает создавать атрибуты после того, как в элемент включены дочерние узлы других типов);
· элемент не может использоваться для генерации объявлений пространств имен;
· элемент не может создавать атрибуты, имена которых имеют префикс xmlns;
· в случае, когда документ преобразуется в другой документ XML, символы перевода строки в элементе заменяются символьными сущностями.
Элемент xsl:attribute может быть использован в содержимом любого из следующих родителей:
· литерального элемента результата;
· элемента xsl:element;
· элемента xsl:copy в случае, если текущий, копируемый узел является элементом;
· элемента xsl:attribute-set в случае определения именованного набора атрибутов.
Элемент xsl:attribute обычно используется, если:
· требуется создать атрибут с не известным заранее именем или пространством имен;
· требуется создать атрибут в пространстве имен, которое является для процессора значащим (например, в пространстве имен XSLT);
· требуется создать атрибут, вычисление значения которого не может быть реализовано одним или несколькими выражениями XPath (например, условный вывод атрибута).
5.3.8.3. Элемент xsl:attribute-set
Для того чтобы упростить создание в элементах целых наборов атрибутов, можно заранее определить их в элементе xsl:attribute-set, который имеет следующий синтаксис:
<xsl:attribute-set
name="имя"
use-attribute-sets="имена"
>
<!--
Содержимое: элементы xsl:attribute
-->
</xsl:attribute-set>
Обязательный атрибут name задает имя набора атрибутов. В атрибуте use-attribute-sets через пробел перечисляются имена наборов атрибутов, которые должны быть использованы в данном элементе.
Элемент xsl:attribute-set содержит последовательность, состоящую из нуля или более элементов xsl:attribute.
Именованные наборы атрибутов можно использовать, указывая их имена в значении атрибута use-attribute-sets, который может присутствовать в элементах xsl:element, xsl:copy и xsl:attribute-set, а также в литеральных результирующих элементах.
Включение набора атрибутов в элемент равносильно простому копированию элементов xsl:attribute, определенных в соответствующих элементах xsl:attribute-set.
Пример использования элементов xsl:element, xsl:attribute и xsl:attribute-set:
Следующая таблица стилей формирует документ HTML для вывода тем сообщений в документе XML message.xml:
<?xml version="1.0" encoding="windows-1251"?>
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" version="4.0"
encoding="windows-1251" indent="yes"/>
<xsl:attribute-set name="hrAttrs">
<xsl:attribute name="width">25%</xsl:attribute>
<xsl:attribute name="color">green</xsl:attribute>
<xsl:attribute name="align">left</xsl:attribute>
</xsl:attribute-set>
<!-- Формирование выходного документа HTML -->
<xsl:template match="/">
<html>
<head>
<title>Вывод тем сообщений</title>
<style type="text/css">
.red {color:red}
.bold {font-weight:bold}
</style>
</head>
<body>
<!-- Применение правила шаблона для элемента message -->
<xsl:apply-templates
select="email-folder/message"/>
<!-- Задание элемента hr -->
<xsl:element name="hr"
use-attribute-sets="hrAttrs"/>
</body>
</html>
</xsl:template>
<!-- Задание правила шаблона для элемента message -->
<xsl:template match="message">
<!-- Задание элемента hr -->
<xsl:element name="hr"
use-attribute-sets="hrAttrs"/>
<!-- Задание элемента p -->
<p class="bold">Тема:
<!-- Задание элемента span -->
<xsl:element name="span">
<!-- Задание атрибута class для элемента span -->
<xsl:attribute
name="class">red</xsl:attribute>
<!-- Получение значения для элемента subject -->
<xsl:apply-templates
select="./header/subject/text()"/>
</xsl:element>
</p>
</xsl:template>
</xsl:stylesheet>
В результате преобразования документ HTML будет иметь следующий вид:
<html>
<head>
<meta http-equiv="Content-Type"
content="text/html; charset=windows-1251">
<title>Вывод тем сообщений</title>
<style type="text/css">
.red {color:red}
.bold {font-weight:bold}
</style>
</head>
<body>
<hr width="25%" color="green" align="left">
<p class="bold">Тема:<span
class="red">Поздравление</span></p>
<hr width="25%" color="green" align="left">
<p class="bold">Тема: <span
class="red">Напоминание</span></p>
<hr width="25%" color="green" align="left">
<p class="bold">Тема: <span
class="red">Отказ</span></p>
<hr width="25%" color="green" align="left">
<p class="bold">Тема: <span
class="red">Вопрос</span></p>
<hr width="25%" color="green" align="left">
<p class="bold">Тема: <span
class="red">Ответ</span></p>
<hr width="25%" color="green" align="left">
</body>
</html>
и в Web-браузере будет выведено:
Teaching Reading
In the study of English, reading has often been at the center of debate among teachers and scholars.
What is reading?
What words will you use to give a definition of reading?
(a) understand, interpret, meaning, sense etc.
(b) decode, decipher, identify etc.
(c) articulate, speak, pronounce etc.
If you use the ideas reflected in group (b) you want to say, probably, that unless we can correctly recognize the words we meet in print, we cannot even begin to read.
If you use the words from group (c) you mean that the reading lesson is used as an opportunity to teach pronunciation, encourage fluent and expressive speaking and so on.
For early readers reading aloud is of course an important aid, beginners have to discover how writing is associated with the spoken words they have already learned to use.
But the early reading stage does not last long – two or three years at most, normally. What is the function of reading aloud after that?
Reading aloud is not common outside the classroom. Most of our reading is done silently, unless there are special circumstances such as reading to someone who has lost the spectacles.
If you use the words from the group (a) you mean that you read because you want to get something from the text: facts, ideas, enjoyment; whatever it is, you want to get message that the writer expressed.
So the words in group (a) turn to be the most important ones, if we are thinking of a definition of reading.
There are many definitions of reading given by researchers. I’ll give you the definition, given by С.К. Фомкина and З.И. Клычникова:
«Чтение –процесс восприятия и активной переработки информации, закодированной по системе того или иного языка». (З.И. Клычникова. Психология особенности обучения чтению на иностранном языке. М. 1973)
Дата добавления: 2015-03-20; просмотров: 769;