web-dev-qa-db-ja.com

Schema.org SiteNavigationElementマークアップ

Schema.org SiteNavigationElementをこのように構成する必要がありますか

<div itemscope itemtype="http://www.schema.org/SiteNavigationElement">
    <ul>
        <li itemprop="url"><a href="#" itemprop="name">Link 1</a>
    </ul>
</div>

またはこのような?

<div itemscope itemtype="http://www.schema.org/SiteNavigationElement">
    <ul>
        <li>
            <a href="#" itemprop="url"><span itemprop="name">Link 1</span></a>
        </li>
    </ul>
</div>
3
davidcondrey

あなたの質問は次のようです:

  • liitemprop="url"を指定できますか?
  • aitemprop="name"を指定できますか?

これらの質問の両方に対する答えは、いいえ、そうすべきではありません。 Microdataはaなどの要素の特別な解析ルールを定義します

Schema.orgの url property は、値としてURLを想定しています。 Microdataでは、a/area/link /などの要素を使用する必要があることを定義しています。 ( 必須srcまたはhref属性を持つ任意の要素)URLを指定します。最初の例では、urlプロパティの値はnotではなく、「Link 1」というテキストになります。

a要素のプロパティ(href属性がある場合)は常にhrefコンテンツ(要素コンテンツではなく)を値として取るため、最初の例ではURLを値として使用します name property (ただし、もちろんURLではなくテキストが必要です)。

そのため、最初の例では間違った結果が生成されます。 2番目の例は問題ありません。

span要素を省略することも可能であることに注意してください。の代わりに

<li>
  <a href="#" itemprop="url"><span itemprop="name">Link 1</span></a>
</li>

あなたが使うことができます

<li itemprop="name">
  <a href="#" itemprop="url">Link 1</a>
</li>

(スタックオーバーフローに関する質問の 私の同様の回答 も参照してください。)

5
unor

Search Engine Land によると、次のようになります。

<ul itemscope itemtype="http://www.schema.org/SiteNavigationElement">
    <li itemprop="name">
        <a itemprop="url" href="#">Link 1</a>
    </li>
    <li itemprop="name">
        <a itemprop="url" href="#">Link 2</a>
    </li>
    <li itemprop="name">
        <a itemprop="url" href="#">Travel Resources</a>
    </li>
</ul>
2
John R Perry

SiteNavigationElementには私にとって問題があり、他の一部の人々にとっても同様です。@ bybeがコメントで投稿した質問でわかるように。問題は範囲の不足であると言えます。

SiteNavigationElementはナビゲーションシステムの単一の項目を参照しているため、サイトのナビゲーションの要素として読み取られます。または、ナビゲーションシステム全体を指すため、サイトのナビゲーション要素

<!DOCTYPE html>
<html>
    <head>
        <title>test</title>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    </head>
    <body>
        <div itemscope itemtype="http://schema.org/WebPageElement">
            <link itemprop="additionalType" href="http://schema.org/ItemList" />
            <meta itemprop="name" content="navigation_menu" />
            <ul>
                <li itemprop="additionalType" itemscope itemtype="http://www.schema.org/SiteNavigationElement">
                    <span itemprop="itemListElement">
                        <a href="http://www.example.com/link_1" itemprop="url"><span itemprop="name">Link 1</span></a>
                    </span>
                </li>
                <li itemprop="additionalType" itemscope itemtype="http://www.schema.org/SiteNavigationElement">
                    <span itemprop="itemListElement">
                        <a href="http://www.example.com/link_2" itemprop="url"><span itemprop="name">Link 2</span></a>
                    </span>
                </li>
            </ul>
        </div>
    </body>
</html>

これはもう少し複雑です。ナビゲーションシステムの各メンバーをタグに値する要素と見なすだけでなく、additionalTypeを使用してアイデアを伝える複合構文も必要です。それらのリンクは何かに属するアイテムのリストであること。

更新

この回答のコードを上記のバージョンに変更し、microdataおよびHTMLとして機能し、検証する方法に適合させました。質問の編集履歴では、私が初期に使用したオプションを見ることができます。それらのコードを置き換えたのは

  • 最初の部分でエラーが発生し、型を指定する必要があるプロパティを使用しました。構造化データテストツールはエラーなしで検証しましたが
  • HTMLオプションは正常に検証されましたが、先ほど述べたように、それを実現する方法は、最後のアイテムを読み取るだけのmicrodata解析メソッドを壊します。
  • このメッセージの時点では、単一のアイテムタイプに2つのタイプを含める方法とは思われません。これはW3C WebSchemas/additionalTypeProposal で確認できますが、2013年5月以降は更新されていません。
1
PatomaS