Buka deklarasi namespace Graph: HTML dengan XMLNS atau head prefix?

129

Saya telah melihat informasi yang bertentangan tentang cara terbaik mengimplementasikan ruang nama grafik Open. Secara khusus, situs web Open Graph menggunakan beberapa metode yang berbeda, dan contoh-contoh Facebook Open Graph menggunakan metode lain.

Contoh situs web Open Graph (menggunakan atribut awalan HTML):

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

Kode sumber situs web Grafik Terbuka (menggunakan atribut HTML XMLNS):

<html xmlns="http://www.w3.org/1999/xhtml" xmlns:og="http://ogp.me/ns#">

Dokumentasi Facebook Open Graph (menggunakan atribut awalan HEAD):

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

Dokumentasi Facebook Open Graph # 2 (menggunakan atribut HTML XMLNS):

<html xmlns="http://www.w3.org/1999/xhtml" xmlns:og="http://ogp.me/ns#" 
      xmlns:fb="https://www.facebook.com/2008/fbml">

Apa metode yang direkomendasikan atau bahkan tidak masalah?

Matt Beckman
sumber
9
Saya menindaklanjuti secara internal di FB untuk mendapatkan jawaban yang tepat untuk Anda.
Simon Cross
7
@SimonCross, bertahun-tahun kemudian (Nov / 2017) kami masih menunggu jawabannya ...;)
Helmut Granda

Jawaban:

73

Semuanya setara dan semuanya akan berfungsi.

Gunakan awalan karena ini adalah cara yang disarankan dan lebih sedikit karakter.

Saya akan memperbarui semua dokumentasi kami untuk awalan.

Paul Tarjan
sumber
4
Bisakah Anda jelaskan mengapa menggunakan sesuatu? Bagaimana kalau saya tinggalkan saja deklarasi ini? Apakah ada yang akan pecah jika saya melakukan itu?
andrewrk
3
Tidak ada yang akan rusak sekarang, tetapi mengandalkan default jarang merupakan ide yang baik ketika Anda bisa eksplisit. Jika 2 tahun kemudian kami mengubah standarnya, situs Anda akan rusak. Juga, jika Anda mendeklarasikan ruang nama Anda secara langsung, itu akan membantu parser lain, bukan hanya Facebook.
Paul Tarjan
1
Paul, saya perhatikan bahwa dokumen belum diperbarui sejak November. Mengapa menggunakan cara baru yang terbaik, jika kedua cara akan didukung oleh semua browser yang ada di masa mendatang? Mengadopsi sesuatu yang baru jika dukungan tidak ada di sana (di antara agen pengguna, parser, dll.) Sepertinya merupakan risiko yang tidak perlu kecuali ada beberapa perbedaan aktual antara keduanya. Saya belum dapat menemukan sumber daya yang mengatakan demikian.
AndrewF
3
@ PaulTarjan Di Sini ! Yang itu punya contoh menggunakan xmlns. Juga, haruskah prefixdigunakan pada htmlatau headtag? Apakah itu baik-baik saja? Mana yang direkomendasikan?
its_me
9
Oh, dokumen itu sudah tua. Benda kuning di atas mengatakan demikian. Kami tidak ingin menyentuh mereka karena mereka banyak direferensikan. Letakkan di prefixatas head. Ini bekerja pada keduanya tetapi lebih dekat ke tag lebih baik.
Paul Tarjan
4

Saya mencoba mengikuti jawaban @Paul Tarjan menggunakan awalan di kepala. Namun saya mendapat beberapa masalah Internet Explorer 8 . Jadi pada akhirnya saya masih menggunakan cara xmlns untuk namespace fb:

<!DOCTYPE HTML>
<html xmlns:fb="http://ogp.me/ns/fb#">
  <head prefix="og: http://ogp.me/ns# object: http://ogp.me/ns/object#">
lalalala
sumber
3

Bahkan tidak masalah. RDFa Core Initial Context diakui og sebagai awalan kosakata yang banyak digunakan:

Pengguna RDFa dapat menggunakan awalan ini tanpa memiliki kewajiban mendefinisikan awalan dalam kode HTML. Daftar awalan yang sama juga telah ditetapkan untuk JSON-LD sebagai Konteks JSON-LD di URI http://www.w3.org/2013/json-ld-context/rdfa11; Pengguna JSON-LD dapat menggunakan @contextkunci dengan URI itu sebagai singkatan untuk menggunakan awalan yang sama.

Penekanan ditambahkan untuk kejelasan.

Karena itu, Anda tidak perlu menambahkan namespace ke dokumen HTML Anda. Informasi lebih lanjut di sini .

Josh Habdas
sumber
2
<html xmlns="http://www.w3.org/1999/xhtml" prefix="og: http://ogp.me/ns# fb:
http://www.facebook.com/2008/fbml"> <head>

Ada cara terbaik untuk memvalidasi.

Егор Щапов
sumber
1

atribut prefix / xmlns berguna untuk mendefinisikan short-hand. rdf berasal dari turunan xml sehingga notasi xmlns harus diharapkan bekerja tanpa detail doctype. rdfa memperluas html dengan atribut termasuk awalan seperti yang diberikan oleh http://www.w3.org/TR/rdfa-in-html/#extensions-to-the-html5-syntax Namun, ini membutuhkan kepatuhan pada http: // dev. w3.org/html5/rdfa/rdfa-module.html Juga, dukungan alat untuk rel = "profil" sebagaimana disebutkan di dalamnya belum ditunggu. Hingga saat itu, pilihannya adalah antara menggunakan DOCTYPE lama, atau secara manual menempatkan rdf: untuk tujuan validasi atau menunggu validator & alat tersebut untuk mengejar ketinggalan. Tempat yang tepat untuk membuat deklarasi adalah tag pembuka elemen yang merupakan leluhur dari mana notasi tangan pendek akan digunakan. Khusus untuk kasus awalan og, yang ditentukan sebelumnya oleh konteks awal RDFa Core http://www.w3.org/2011/rdfa-context/rdfa-1.1.html jadi melewatkannya bersama-sama untuk dokumen yang baru lebih baik. Dan khusus untuk html5 konteks awal RDFa http://www.w3.org/2011/rdfa-context/html-rdfa-1.1 dimuat hanya setelah konteks awal RDFa yang disebutkan sebelumnya.

Chawathe Vipul S
sumber