Книга: XSLT

Выбор текстовых узлов при помощи text()

Выбор текстовых узлов при помощи text()

Выбрать текст узла можно при помощи образца "text()". Как правило, нет особых причин применять условие узла text. В XSLT существует правило по умолчанию, в соответствии с которым текст текстового узла включается в выходной документ, если этот узел не выбирается какими-либо другими правилами. Если нужно сделать это правило по умолчанию явным, можно поступить, например, так:

<xsl:template match="text()">
 <xsl:value-of select="."/>
</xsl:template>

Можно перекрыть это правило, не отправляя текст из текстовых узлов в выходной документ, — в том числе так:

<xsl:template match="text()">
</xsl:template>

Потребность в применении условия текстового узла возникает, например, когда нужно выбрать узлы с определенным текстом. Предикат "NAME[text()='Venus']" выбирает элементы <NAME>, в которых содержится имя "Venus". (Будьте внимательны с вложением кавычек, чтобы процессор XSLT не ошибся, — например, такой предикат не работает: "NAME[text()="Venus"]".) Еще одна причина для использования условия текстового узла появляется, когда требуется применить к текстовым узлам некоторое условие при помощи строковых функций XPath (которые будут рассмотрены позже в этой главе). Например, текстовый узел "Earth" в <NAME>Earth</NAME> выбирается образцом "text()[starts-with(.,'Е')]".

КАК УБРАТЬ КОММЕНТАРИИ

Ранее мы видели, что образец "@*|node()" (в котором используется операция OR, обсуждаемая позже) выбирает из файла planets.xml все, включая комментарии. Если вы хотите убрать комментарии, воспользуйтесь образцом "@*|*|text()", который сохраняет только элементы, атрибуты и текстовые узлы.

Оглавление книги


Генерация: 0.504. Запросов К БД/Cache: 3 / 1
поделиться
Вверх Вниз