Навигационная цепочка «Хлебные крошки – Breadcrumbs» с семантической разметкой по schema.org

#
Навигационная цепочка «Хлебные крошки – Breadcrumbs» с семантической разметкой по schema.org
Добрый день!
Кто-нибудь подскажет, что я делаю не так.
Хочу семантически разметить «Хлебные крошки» по schema.org.
К примеру, на странице Платяной шкаф из МДФ с зеркалом не правильно выводится переменная position, а именно должна быть последовательность 1, 2, 3, 4… А у меня – 1, 2, 2, 2. Вот так!

Организовал я микроразметку следующим образом:
В макете:
<section itemscope="itemscope" itemtype="http://schema.org/Product" class="col-xs-12 col-lg-9 pull-right">


Остальное в XSL-шаблоне (за эту нумерацию отвечает конструкция в теге Цитата:
meta
):
<?xml version="1.0" encoding="utf-8"?><!DOCTYPE xsl:stylesheet>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:hostcms="http://www.hostcms.ru/" exclude-result-prefixes="hostcms">
<xsl:output xmlns="http://www.w3.org/TR/xhtml1/strict" doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" encoding="utf-8" indent="yes" method="html" omit-xml-declaration="no" version="1.0" media-type="text/xml"/>

<xsl:template match="/site">
<xsl:if test="count(*[@id]) > 0"><a href="/"><span class="octicon octicon-home"></span> Главная</a>
<xsl:apply-templates select="*[@id]" /></xsl:if>
</xsl:template>

<xsl:template match="*">

<!-- Определяем адрес ссылки -->
<xsl:variable name="link"><xsl:choose>
<!-- Если внутренняя ссылка -->
<xsl:when test="link != ''">
<xsl:value-of disable-output-escaping="yes" select="link"/>
</xsl:when>
<!-- Если внешняя ссылка -->
<xsl:otherwise><xsl:value-of disable-output-escaping="yes" select="url"/></xsl:otherwise>
</xsl:choose></xsl:variable>

<span class="text-muted"><xsl:text> › </xsl:text></span>

<!-- Показывать ссылку? -->
<span itemprop="itemListElement" itemscope="itemscope" itemtype="http://schema.org/ListItem">
<xsl:choose>
<xsl:when test="(show = 1 or active/node() and active = 1) and count(*[@id]) > 0">
<a itemprop="item" href="{$link}"><span itemprop="name"><xsl:value-of disable-output-escaping="yes" select="name"/></span></a>
</xsl:when>
<xsl:otherwise>
<em itemprop="item" class="text-normal"><span itemprop="name"><xsl:value-of disable-output-escaping="yes" select="name"/></span></em>
</xsl:otherwise>
</xsl:choose>
<meta itemprop="position" content="{count(ancestor::structure)+1}" />
</span>

<xsl:apply-templates select="*[@id][link/node() or url/node()]" />
</xsl:template></xsl:stylesheet>


Что я делаю не так?
#
Re: Навигационная цепочка «Хлебные крошки – Breadcrumbs» с семантической разметкой по schema.org
Я делал так:

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0"
   xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
   xmlns:hostcms="http://hostcms.ru/"
   exclude-result-prefixes="hostcms">
   <xsl:output version="1.0"
      xmlns="http://www.w3.org/TR/xhtml1/strict"
      doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN"
      encoding="utf-8"
      indent="yes"
      method="html"
      omit-xml-declaration="no"
      media-type="text/xml"/>
   
   <!-- XSLt шаблон для отображения хлебных крошек на сайте -->
   
   <xsl:template match="site">
      <xsl:if test="count(*[@id]) &gt; 0">
         <div class="container">
            <div class="row">
               <div class="layout__full-width">
                  <ol class="breadcrumbs" itemscope="itemscope" itemtype="http://schema.org/BreadcrumbList">
                     <li class="breadcrumbs__item" itemprop="itemListElement" itemscope="itemscope" itemtype="http://schema.org/ListItem">
                        <a class="breadcrumbs__link" itemprop="item" href="/">
                           <span itemprop="name">Главная</span>
                        </a>
                        <meta itemprop="position" content="1"/>
                     </li>
                     <xsl:apply-templates select="*[@id]"/>
                  </ol>
               </div>
            </div>
         </div>
      </xsl:if>
   </xsl:template>
   
   <xsl:template match="*">
      <li class="breadcrumbs__item" itemprop="itemListElement" itemscope="itemscope" itemtype="http://schema.org/ListItem">
         <a class="breadcrumbs__link" itemprop="item">
            <xsl:if test="count(*[@id][link/node() or url/node()]) > 0">
               <xsl:attribute name="href">
                  <xsl:choose>
                     <xsl:when test="url != ''">
                        <xsl:value-of disable-output-escaping="yes" select="url"/>
                     </xsl:when>
                     <xsl:otherwise>
                        <xsl:value-of disable-output-escaping="yes" select="link"/>
                     </xsl:otherwise>
                  </xsl:choose>
               </xsl:attribute>
            </xsl:if>
            <xsl:value-of select="name"/>
         </a>
         <meta itemprop="position" content="{count(ancestor::*) + 1}"/>
      </li>
      <xsl:apply-templates select="*[@id][link/node() or url/node()]"/>
   </xsl:template>
</xsl:stylesheet>
Email: roman.fov@gmail.com Skype: roman-fov
#
Re: Навигационная цепочка «Хлебные крошки – Breadcrumbs» с семантической разметкой по schema.org
Roman Fov, спасибо помогли!
Оказывается в моём XSL-шаблоне надо было изменить
<meta itemprop="position" content="{count(ancestor::structure)}" /> на
<meta itemprop="position" content="{count(ancestor::*)}" /> … и всё работает отлично!

И еще, с какого числа начинать отсчёт content="…"? С нуля [content="0"] или с единицы [content="1"].
На официальном сайте schema.org в разделе BreadcrumbList дочерние элементы начинаются с «1». Значит, главная страница сайта должна быть content="0". Я так и сделал.

Привожу свой XSL-шаблон, если кому понадобится.
Учитывайте, что строку:
<div itemscope="itemscope" itemtype="http://schema.org/BreadcrumbList" …>
и закрывающий тег я прописывал в другом файле.

<?xml version="1.0" encoding="utf-8"?><!DOCTYPE xsl:stylesheet>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:hostcms="http://www.hostcms.ru/" exclude-result-prefixes="hostcms">
<xsl:output xmlns="http://www.w3.org/TR/xhtml1/strict" doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" encoding="utf-8" indent="yes" method="html" omit-xml-declaration="no" version="1.0" media-type="text/xml"/>
<xsl:template match="/site">
<xsl:if test="count(*[@id]) > 0"><a href="/"><span class="octicon octicon-home"></span> Главная</a>
<xsl:apply-templates select="*[@id]" /></xsl:if>
</xsl:template>
<xsl:template match="*">

<!-- Определяем адрес ссылки -->
<xsl:variable name="link"><xsl:choose>
<xsl:when test="link != ''"><xsl:value-of disable-output-escaping="yes" select="link"/></xsl:when>
<xsl:otherwise><xsl:value-of disable-output-escaping="yes" select="url"/></xsl:otherwise>
</xsl:choose></xsl:variable>
<span class="text-muted"><xsl:text> › </xsl:text></span>

<!-- Показывать ссылку? -->
<span itemprop="itemListElement" itemscope="itemscope" itemtype="http://schema.org/ListItem">
<xsl:choose>
<xsl:when test="(show = 1 or active/node() and active = 1) and count(*[@id]) > 0">
<a itemprop="item" href="{$link}"><span itemprop="name"><xsl:value-of disable-output-escaping="yes" select="name"/></span></a>
</xsl:when>
<xsl:otherwise>
<em itemprop="item" class="text-normal"><span itemprop="name"><xsl:value-of disable-output-escaping="yes" select="name"/></span></em>
</xsl:otherwise>
</xsl:choose>
<meta itemprop="position" content="{count(ancestor::*)}" />
</span>
<xsl:apply-templates select="*[@id][link/node() or url/node()]" />
</xsl:template></xsl:stylesheet>


Ещё раз большое спасибо!
#
Re: Навигационная цепочка «Хлебные крошки – Breadcrumbs» с семантической разметкой по schema.org
Отсчёт начинается с 1. Вот источник:
https://developers.google.com/structured-data/breadcrumbs

Если хотите исключить ссылку на главную из breadcrumbs, то просто не размечайте её
Email: roman.fov@gmail.com Skype: roman-fov
#
Re: Навигационная цепочка «Хлебные крошки – Breadcrumbs» с семантической разметкой по schema.org
последний элемент если не делать ссылкой, то в микроформат УРЛ не передается, хз, наверное тоже неправильно.
наверное есть еще тэг для этого, чтобы ссылки на последнем пункте крошек не было, но адрес как-то передать гуглу...
#
Re: Re: Навигационная цепочка «Хлебные крошки – Breadcrumbs» с семантической разметкой по schema.org
volgastar, В ссылке выше есть пример с json-ld. Наверное, это то, что вам нужно.
Email: roman.fov@gmail.com Skype: roman-fov
Авторизация