web-dev-qa-db-ja.com

HTMLプレフィックス属性の意味(Open Graph Protocol)?

Facebook Open Graph Protocol が初めてです。 HTML prefix属性の意味を理解しようとしています。このテーマを扱うStack Overflowの最も近い投稿は this post です。これは、さまざまな構文の違いと使用する構文を扱っているため、非常に役立ちました。

しかし、この投稿はこのprefix属性が何であるか、何をするのかについて何も述べていません。知る限り、これは標準のHTML属性ではありません。 このドキュメント を見つけることができました。これは、W3Cがこの属性を定義する場所ですが、それを理解することはできませんでした。

誰かが私に説明してください:

  1. prefix属性は何をしますか?

  2. 書けますか

    <html prefix="og:http://ogp.me/ns#">

    の代わりに

    <html prefix="og: http://ogp.me/ns#">

    それとも構文エラーでしょうか?

  3. 特定のHTMLタグに複数のprefix属性を含めることはできますか?

    <head prefix="a: http://www.aaa.com/ns#" prefix="b: http://www.bbb.com/ns#">

    私のHTMLの知識に基づいて、これは間違っていますが、prefixは非標準の属性です。おそらく、私が知りたいのは、次のように書くことができるということです。

    <head prefix="a: http://www.aaa.com/ns# b: http://www.bbb.com/ns#">

    または、HTMLツリーの任意の場所で複数のプレフィックスを指定することは、何らかの理由で意味がありませんか?

  4. このprefixタグがHTML仕様の一部ではない場合、この属性を含むページをコードバリデーターに送信すると、コードが標準に準拠するようになりますか?

私の質問に答えてくれてありがとう。

36
John Sonderson

最初:

prefixoneRDFa(属性のリソース記述フレームワーク) 拡張で定義された属性です。 RDFaは、HTMLやXMLなどの多くのマークアップ言語で表されるWebページで セマンティックWeb を実装するために使用されます。ブラウザにどのように構造化すべきかを伝えるWebページを持たせる代わりに、今やページが表すもの(人、製品のリストなど)も伝えることができます。

また、Webページ上のデータを意味的に表現できるようにするには、semantic vocabularyを使用する必要があります。これは、ブラウザーにページで表現されていることを正確に伝えます。人気のあるsemantic vocabularyschema.org です。

しかし、場合によっては、単一のセマンティックボキャブラリーでは、すべてのWebページを表現および説明できないことがあります。 prefix属性の出番です:

prefix属性は何をしますか?

prefix属性を使用すると、1つ以上のセマンティックボキャブラリーを使用して指定できます。次の例では、2つの語彙を使用してa Persona favorite Animalを表します。 schema.org および vocab.org =。

<p vocab="http://schema.org/" prefix="ov: http://open.vocab.org/terms/" resource="#manu" typeof="Person">
    My name is <span property="name">MY_NAME</span>

    and my telephone is <span property="telephone">MY_TELEPHONE</span>.

    My favorite animal is the <span property="ov:preferredAnimal">FAVORITE_ANIMAL</span>.
</p>

<html prefix="og:http://ogp.me/ns#"> の代わりに <html prefix="og: http://ogp.me/ns#">またはそれは構文エラーでしょうか?

前の構文を使用してウェブ上の例を見つけることができないことに加えて、 RDFa Core の仕様から、少なくとも1つのスペースが実際に必須であることがわかります。

prefix
    a white space separated list of prefix-name IRI pairs of the form
    NCName ':' ' '+ xsd:anyURI

特定のHTMLタグに複数のprefix属性を含めることはできますか?

はい、できます。上記のprefix属性の指定、および RDFa Core の指定で指定された多くの例から、以下が許可されます。

<html
    prefix="foaf: http://xmlns.com/foaf/0.1/
            dc: http://purl.org/dc/terms/"
>
    <!-- your page -->
</html>

このprefixタグがHTML仕様の一部ではない場合、この属性を含むページをコードバリデーターに送信すると、コードが標準に準拠するようになりますか?

@wensveenが述べたように、 HTML5はすぐに使えるRDFa属性をサポートしています

34
tayllan

プレフィックス属性は、実際にリンクしたRDFa仕様で定義されているようです。 XHTMLドキュメントの正しいメディアタイプを指定する必要があります(application/xhtml+xml)および正しいdoctype(<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+RDFa 1.1//EN" "http://www.w3.org/MarkUp/DTD/xhtml-rdfa-2.dtd">)およびおそらくいくつかのXMLプッシュアップ、これはHTML5には必要ありません。 HTML5では、RDFa定義の属性をそのまま使用できます。

参照: HTML + RDFa 1.1仕様

プレフィックスを名前空間にマッピングするこの方法に特定の利点があるかどうかはわかりません。私にとっても完全に明確ではありません。

2
wensveen