Вывод значений элементов или атрибутов (xslt) — различия между версиями
SerjK (обсуждение | вклад) |
Aposio (обсуждение | вклад) |
||
(не показана 1 промежуточная версия этого же участника) | |||
Строка 1: | Строка 1: | ||
+ | '''Актуально для версии 19.''' | ||
+ | |||
'''Задача:''' Вывести значения атрибутов или элементов в шаблоне (это могут быть значения любых полей нашей страницы). | '''Задача:''' Вывести значения атрибутов или элементов в шаблоне (это могут быть значения любых полей нашей страницы). | ||
Строка 6: | Строка 8: | ||
UMI.CMS предоставляет возможность просмотреть содержимое любой существующей страницы в системе в виде XML непосредственно в окне браузера. | UMI.CMS предоставляет возможность просмотреть содержимое любой существующей страницы в системе в виде XML непосредственно в окне браузера. | ||
Для того, чтобы вывести страницу в виде XML следует набрать в адресной строке httр://адрес_сайта/upage/id_страницы. | Для того, чтобы вывести страницу в виде XML следует набрать в адресной строке httр://адрес_сайта/upage/id_страницы. | ||
− | |||
2. Итак мы хотим вывести следующее: | 2. Итак мы хотим вывести следующее: | ||
Строка 14: | Строка 15: | ||
В xsl шаблоне дизайна для вывода у нас соответственно будут записи вида: | В xsl шаблоне дизайна для вывода у нас соответственно будут записи вида: | ||
− | <source lang=" | + | <source lang="xml"> <xsl:value-of select="/result/@title" /> |
− | <xsl:value-of select="/result/@header"> | + | <xsl:value-of select="/result/@header" /> |
− | <xsl:value-of select="/result/page/properties/group/property[@name='content']/value"> | + | <xsl:value-of select="/result/page/properties/group/property[@name='content']/value" /> |
</source> | </source> | ||
3. Теперь на страницах сайта будут выводиться нужные нам значения. Для того, чтобы содержимое поля "контент" выводилось без экранирования тэгов, необходимо добавить еще один атрибут, записав инструкцию так: | 3. Теперь на страницах сайта будут выводиться нужные нам значения. Для того, чтобы содержимое поля "контент" выводилось без экранирования тэгов, необходимо добавить еще один атрибут, записав инструкцию так: | ||
− | <source lang=" | + | <source lang="xml"><xsl:value-of select="/result/page/properties/group/property[@name='content']/value" disable-output-escaping="yes" /> |
</source> | </source> | ||
Строка 27: | Строка 28: | ||
4. Фигурные скобки в атрибутах: {} | 4. Фигурные скобки в атрибутах: {} | ||
Часто может возникнуть необходимость вывести какие-либо значения внутри атрибута тега, например: | Часто может возникнуть необходимость вывести какие-либо значения внутри атрибута тега, например: | ||
− | <source lang=" | + | <source lang="xml"><meta name="description" content="/"> |
<meta name="keywords" content="/"></source> | <meta name="keywords" content="/"></source> | ||
В таком случае необходимо воспользоваться записью через фигурные скобки, указав таким же образом путь до элемента: | В таком случае необходимо воспользоваться записью через фигурные скобки, указав таким же образом путь до элемента: | ||
− | <source lang=" | + | <source lang="xml"><meta name="description" content="{result/meta/description}" /> |
− | <meta name="keywords" content="{result/meta/keywords}"></source> | + | <meta name="keywords" content="{result/meta/keywords}" /></source> |
+ | |||
+ | 5. '''Обратите внимание''' на то, что все непарные элементы в xsl необходимо закрывать слешем <source lang="java"><xsl:value-of select="$page" /></source> | ||
+ | У парных необходимо ставить слеш в начале второго элемента, например: | ||
+ | <source lang="xml"> | ||
+ | <xsl:if test="$test"> | ||
+ | <xsl:value of select="$var" /> | ||
+ | </xsl:if> | ||
+ | </source> | ||
[[Категория:Верстка в XSLT]] | [[Категория:Верстка в XSLT]] |
Текущая версия на 06:16, 19 ноября 2018
Актуально для версии 19.
Задача: Вывести значения атрибутов или элементов в шаблоне (это могут быть значения любых полей нашей страницы).
Решение: познакомимся с инструкцией XSLT <xsl:value-of>.
1. Вывод значений элементов или атрибутов в шаблоне осуществляется при помощи инструкции <xsl:value-of select="путь_до_элемента">. UMI.CMS предоставляет возможность просмотреть содержимое любой существующей страницы в системе в виде XML непосредственно в окне браузера. Для того, чтобы вывести страницу в виде XML следует набрать в адресной строке httр://адрес_сайта/upage/id_страницы.
2. Итак мы хотим вывести следующее: title страницы - получить его можно указав /result/@title ; заголовок страницы - получить его можно, указав /result/@header ; контент - получить его можно, указав /result/page/properties/group/property[@name='content']/value
В xsl шаблоне дизайна для вывода у нас соответственно будут записи вида:
<xsl:value-of select="/result/@title" />
<xsl:value-of select="/result/@header" />
<xsl:value-of select="/result/page/properties/group/property[@name='content']/value" />
3. Теперь на страницах сайта будут выводиться нужные нам значения. Для того, чтобы содержимое поля "контент" выводилось без экранирования тэгов, необходимо добавить еще один атрибут, записав инструкцию так:
<xsl:value-of select="/result/page/properties/group/property[@name='content']/value" disable-output-escaping="yes" />
4. Фигурные скобки в атрибутах: {} Часто может возникнуть необходимость вывести какие-либо значения внутри атрибута тега, например:
<meta name="description" content="/">
<meta name="keywords" content="/">
В таком случае необходимо воспользоваться записью через фигурные скобки, указав таким же образом путь до элемента:
<meta name="description" content="{result/meta/description}" />
<meta name="keywords" content="{result/meta/keywords}" />
5. Обратите внимание на то, что все непарные элементы в xsl необходимо закрывать слешем
<xsl:value-of select="$page" />
У парных необходимо ставить слеш в начале второго элемента, например:
<xsl:if test="$test">
<xsl:value of select="$var" />
</xsl:if>