Xpoint
   [напомнить пароль]

Упрощение XPath выражений с помощью ключей: История

Внимание! Данный интерфейс находится в стадии глубокой переделки. Наберитесь терпения.

Последнее изменение

11 лет назад Eugene Efremov[досье] изменил текст:
Текст: Вызваем шаблоны для элемента =#rdf:RDF#= с разными mode. Очевидно, что результат работы у них должен быть одинаковый.¶
<<<(xslt)¶
<xsl:template match="/">¶
<xsl:apply-templates select="rdf:RDF" mode="key"/>¶
-----¶
<xsl:apply-templates select="rdf:RDF" mode="string"/>¶
</xsl:template>¶
>>>¶
Первый варинат: выбираем те элементы item, которые удовлетворяют паттерну. ¶
<<<(xslt)¶
<xsl:template match="rdf:RDF" mode="string">¶
<xsl:apply-templates select="d:item[taxo:topics / rdf:Bag / rdf:li / @resource = 'http://del.icio.us/tag/javascript']"/>¶
</xsl:template>¶
>>>¶
Второй вариант: создаем ключ. Ключ - значение элемента =#item/taxo:topics/rdf:Bag/rdf:li/@resource#=, значение - узел =#item#=¶
<<<(xslt)¶
<xsl:key name="tag" match="d:item" use="taxo:topics / rdf:Bag / rdf:li / @resource"/>¶
>>>¶
Выбираем узлы, где значение ключа равено http://del.icio.us/tag/javascript:¶
<<<(xslt)¶
<xsl:template match="rdf:RDF" mode="key">¶
<xsl:apply-templates select="key('tag', 'http://del.icio.us/tag/javascript')"/>¶
</xsl:template>¶
>>>¶
<<<(xslt)¶
<xsl:template match="d:item">¶
<xsl:value-of select="d:title"/>¶
</xsl:template>¶
>>>¶


* уменьшения времени преобразования.¶
* xsl легче модифицировать, если поменялись данные. XPath надо будет поменять всего в одном месте. Это не очевидно из приведенного примера, но вообразите ситуацию, когда один ключ используется раз 10.¶
* результат работы функции =#key()#= не зависит, в пределах одного документа, от контекста, в котором ее вызвали. Это удобно при перегруппировке сильно разветвленных деревьев в xsl(е), .

== Приложения¶

История предыдущих изменений

изменения дата автор
текст 2006-09-21 16:16:08 (11 лет назад) Eugene Efremov[досье]
путь 2006-09-20 15:17:36 (11 лет назад) Дмитрий Попов[досье]
текст 2006-09-18 00:37:50 (11 лет назад) Владимир Палант[досье]
текст 2006-09-15 21:51:47 (11 лет назад) Eugene Efremov[досье]
текст 2006-09-15 12:17:40 (11 лет назад) Надя Строганкова[досье]
текст, заголовок 2006-09-14 12:20:26 (11 лет назад) Надя Строганкова[досье]
RSS
Powered by POEM™ Engine Copyright © 2002-2005