कई अलग-अलग माइक्रोडेटा <div> को एक साथ जोड़ना?


11

मैं schema.org शब्दार्थ मार्कअप जोड़ रहा हूं, और उनमें से कई को वेबपेज के विभिन्न भागों में एक साथ जोड़ना चाहूंगा।

यह काम करता है जब मैं उन्हें माता-पिता / बच्चे के रूप में निर्दिष्ट करता हूं:

<div itemscope itemtype="http://schema.org/ExerciseAction">
  <span itemprop="distance">11 km</span>
  <div itemprop="event" itemscope itemtype="http://schema.org/Event">
      <span itemprop="name">first event</span>
      <span itemprop="startDate">2001-01-01</span>
  </div>
</div>

हालाँकि, मुझे नहीं पता कि HTML के पहाड़ से अलग होने पर उन्हें कैसे जोड़ा जाए:

<div itemscope itemtype="http://schema.org/Event">
      <span itemprop="name">some event</span>
      <span itemprop="startDate">2002-02-02</span>
</div>

<!-- 
   ....
   zillion other HTML stuff
   ...
 -->

<div itemscope itemtype="http://schema.org/ExerciseAction">
      <span itemprop="distance">22 km</span>
</div>

मुझे लगता है कि मुझे संबंधित आइटम्स को लिंक करने के लिए "itemref" या कुछ और का उपयोग करना चाहिए, लेकिन मैं इसे काम नहीं कर सकता। को देखते हुए इसी तरह के सवाल इस मामले में मदद नहीं समझे।

अद्यतन: ध्यान दें कि मैं विशेष रूप से ऐसे समाधान की तलाश कर रहा हूं जो किसी प्रकार के संदर्भ के माध्यम से काम करता है और किसी भी प्रकार के घोंसले के शिकार के माध्यम से काम नहीं करता है। इसके अलावा, दूसरे (गैर-कामकाजी) उदाहरण के आदेश को एक ही रहना चाहिए (घटना पहले, एक्सरसाइज सेकंड)। (मेरे नियंत्रण के बाहर इसके कई कारण हैं)।

विशेष रूप से, "यह काम करता है" को कम से कम Google रिच स्निपेट टूल के रूप में परिभाषित किया गया है, जिसमें दिखाया गया है कि आइटम एक साथ जुड़े हुए हैं (जैसा कि उस पहले काम करने वाले उदाहरण के लिए है)

जवाबों:


9

आप itemrefविशेषता का उपयोग कर सकते हैं ।

से माइक्रोडेटा ( W3C कार्यकारी समूह नोट ) कल्पना:

  • 4.2 मूल वाक्यविन्यास :

    गुण के साथ तत्व के वंशज नहीं हैं गुण गुण itemscopeका उपयोग करके आइटम के साथ जुड़ा हो सकता है itemref। यह विशेषता तत्व के बच्चों को itemscopeविशेषता के साथ क्रॉल करने के लिए तत्वों की आईडी की एक सूची लेती है ।

  • 5.2 आइटमitemref :

    एक itemscopeविशेषता वाले तत्वों में एक itemrefविशेषता निर्दिष्ट हो सकती है , जो आइटम के नाम-मूल्य जोड़े को खोजने के लिए क्रॉल करने के लिए अतिरिक्त तत्वों की एक सूची दे सकती है ।


संपादित करें : यह प्रश्न में उल्लिखित आवश्यकताओं के अनुसार काम करना चाहिए:

<div itemprop="event" itemscope itemtype="http://schema.org/Event" id="event001">
  <span itemprop="name">first event</span>
  <span itemprop="startDate">2001-01-01</span>
</div>

<!-- zillion other HTML stuff -->

<div itemscope itemtype="http://schema.org/ExerciseAction" itemref="event001">
  <span itemprop="distance" id="entfernung">11 km</span>
</div>

EDIT 2 (प्रति अतिरिक्त आवश्यकता ): यदि कोई मूल तत्व किसी अन्य आइटम (जैसे, WebPageपर body) को निर्दिष्ट करता है, तो उपरोक्त समाधान काम नहीं करता है क्योंकि तब वह eventसंपत्ति भी लागू WebPageहोगी, जो सही नहीं होगी।

इसका कोई साफ समाधान नहीं है।

एक बदसूरत फिक्स एक अन्य आइटम (के साथ itemscope) जोड़ देगा, लेकिन किसी भी प्रकार (बिना itemtype) के माता-पिता के रूप में Event। इस तरह, eventसंपत्ति इस अप्राप्त वस्तु पर लागू होगी, न कि WebPage

<body itemscope itemtype="http://schema.org/WebPage">

  <div itemscope> <!-- dummy item -->
    <div itemprop="event" itemscope itemtype="http://schema.org/Event" id="event001">
      <span itemprop="name">first event</span>
      <span itemprop="startDate">2001-01-01</span>
    </div>
  </div>

  <!-- zillion other HTML stuff -->

  <div itemscope itemtype="http://schema.org/ExerciseAction" itemref="event001">
    <span itemprop="distance" id="entfernung">11 km</span>
  </div>

</body>

क्या आप एक उदाहरण दे सकते हैं जो ऊपर दिया गया काम करेगा? मैंने घंटों तक कोशिश की है और इसे काम करने के लिए प्रबंधित नहीं किया है (उदाहरण के लिए Google रिच स्निपेट टूल पर इसे सत्यापित करना )। मैं यह कर सकता हूं कि इसमें कई अन्य नाम = मूल्य जोड़े शामिल हैं जो किसी अन्य आइटमस्कॉप में डुप्लिकेट किए गए थे और उनका एक ही नाम था - जैसा कि इसी तरह के प्रश्न में वर्णित है ; लेकिन मैंने एक और आइटमस्कोप को शामिल करने का प्रबंधन नहीं किया - जो कि सवाल है)
मतिजा नालिस

@ मतिजा नालिस: मैंने स्निपेट को अपने जवाब में जोड़ दिया है।
ऊना

धन्यवाद, यह लगभग वही था जो मैं देख रहा था! यह उन्हें एक साथ जोड़ता है जैसा कि उस सरल स्टैंडअलोन HTML उदाहरण में वांछित था। दुर्भाग्य से, Google रिच स्निपेट्स टूल "त्रुटि: पृष्ठ में संपत्ति" घटना "जो स्कीमा का हिस्सा नहीं है, के साथ अधिक जटिल उदाहरण में एक त्रुटि फेंकता है।" (पूरे पृष्ठ में अधिक अभिभावक विभाग हैं, जो समस्या के लिए एक उदाहरण के लिए है schema.org/Webpage )
Matija Nalis

किसी भी विचार कैसे तय करने के लिए? निकाला जा रहा है itemprop "घटना" = से schema.org/Event मदद नहीं करता है, यह itemscopes एक साथ तो नहीं जुड़ता है के रूप में ...
माटिजा Nalis

@ मतिजा नालिस: मैंने एक और स्निपेट जोड़ा, लेकिन यह शायद इस समस्या को ठीक नहीं करता है। मुझे लगता है कि आपको माता-पिता के WebPageमार्कअप को अलग करना होगा और itemrefवहां भी उपयोग करना होगा, ताकि इसमें चिल्ड के रूप में (असंबंधित) आइटम प्रकार शामिल न हों। शायद एक और सवाल होना चाहिए।
अपराह्न

1

अगर मैं आपके प्रश्न को सही ढंग से समझूं, तो बस उस div को बंद न करें।

<div itemscope itemtype="http://schema.org/Event">
  <span itemprop="name">some event</span>
  <span itemprop="startDate">2002-02-02</span>


<!-- ....zillion other HTML stuff... -->

    <div itemscope itemtype="http://schema.org/ExerciseAction">
      <span itemprop="distance">22 km</span>
    </div>
</div>

जब तक मिलान टैग नहीं मिल जाता है, जो कुछ भी उस प्रारंभिक div के अंदर है, तब भी उस प्रारंभिक div का हिस्सा माना जाएगा, उस स्थिति में, एक घटना।


दुर्भाग्य से, मैं किसी भी प्रकार के घोंसले के शिकार का उपयोग नहीं कर सकता (मूल, बहुत अधिक जटिल परियोजना में, वे काफी अलग-अलग उप-टेम्पलेट हैं, जिनमें से प्रत्येक को HTML संरचना को बंद करना होगा), और न ही आदेश बदलने (अन्य चीजों के बीच प्रदर्शन कारण)। मैंने प्रश्न को स्पष्ट करने के लिए अद्यतन किया है। इसके अलावा, ध्यान दें कि आपका उत्तर मान्य नहीं होगा क्योंकि एक्सरसाइजेशन चाइल्ड ओड इवेंट नहीं हो सकता है (केवल रिवर्स संभव है), और इसलिए इसमें उन्हें लिंक करने के लिए आवश्यक आइटमप्रॉप नहीं है।
मतिजा नलिस

@MatijaNalis एकमात्र कारण यह मान्य नहीं था क्योंकि मैंने आपके प्रश्न में दिए गए पाठ की प्रतिलिपि बनाई थी। त्रुटि इसलिए होती है क्योंकि घटना 2002-02-02 अतीत से शुरू होती है। जब इसे भविष्य की तारीख में अपडेट किया जाता है, तो यह काम करता है। इसके अलावा, मुझे पता है कि आपने अब अपना प्रश्न प्रदर्शित करते हुए अपडेट किया है कि आप किसी भी प्रकार का नेस्टिंग नहीं चाहते हैं, लेकिन बस आपको यह बताना है, जब तक कि आप "इवेंट" के लिए दर्ज किए गए डेटा का दूसरा भाग "अंदर" नहीं है एक्सरसाइजेशन "डिव, यह अभी भी काम करेगा। उदाहरण के लिए, "एक्सरसाइज" क्लोजिंग डिव के बाद मेरे उत्तर से "स्टार्टडेट" को स्थानांतरित करें, और यह अभी भी काम करेगा।
रिसियागैनस्ट

1

@Guisasso सही है आप बस तत्व को बंद न करें। लेकिन एक अन्य नोट पर DIV तत्वों के भीतर स्कीमा का उपयोग करने और स्पैन का उपयोग करने के लिए प्रतिबंधित नहीं है क्योंकि यह सुझाव देता है (केवल उदाहरण)। यदि पूरा पृष्ठ ईवेंट से संबंधित सामान के बारे में है और यह साइट के पार है, तो यह बॉडी एलिमेंट का उपयोग करने के लिए अधिक समझदार हो सकता है, जिसका मतलब है कि आपका टेम्पलेट यदि आपके पास स्कीमा खोलने और बंद करने से संबंधित है। इस तरह से आपके लेख सिर्फ उस सामग्री को भरते हैं जबकि टेम्पलेट इसे सेट करता है।

उदाहरण के लिए:

<body itemscope itemtype="http://schema.org/Event">
   <article>
       <h1 itemprop="name">Some Event</h1>
       <span itemprop="startDate">2002-02-02</span>
       <p itemprop="description">I am the super awesome event infromation</p>
       <div itemscope itemtype="http://schema.org/ExerciseAction">
           <span itemprop="distance">22 km</span>
       </div>
   </article>
</body>

या आप में इसका इस्तेमाल कर सकते MAINया ARTICLEतत्व अगर आप एचटीएमएल 5 का उपयोग कर रहे हैं।


Guisasso के लिए टिप्पणी देखें, आपका जवाब एक ही कारणों से ज्यादा काम नहीं करता है। मैंने अपनी आवश्यकताओं को स्पष्ट करने के लिए प्रश्न को अपडेट किया है।
मतिजा नलिस

1

मैंने अतिरिक्त टाइप प्रॉपर्टी को भी चलाया है , जिसका उपयोग निम्नानुसार किया जा सकता है

<div itemscope itemtype="http://schema.org/Event">
      <span itemprop="name">some event</span>
      <span itemprop="startDate">2002-02-02</span>


<!-- 
   ....
   zillion other HTML stuff
   ...
 -->

  <div itemprop="additionalType" itemscope itemtype="http://schema.org/ExerciseAction">
      <span itemprop="distance">22 km</span>
  </div>
</div>

जबकि यह मेरे प्राथमिक मुद्दे (एक्सरसाइज / इवेंट चाइल्ड-पैरेंट रिलेशनशिप को फिर से करने में सक्षम नहीं होने) के साथ मदद करता है, यह अन्य मुद्दे (उन डिवो को घोंसला करने में सक्षम नहीं होने) के साथ मदद नहीं करता है, और यह एक तरह से कुडली (उत्पादन नहीं करता है) मूल कार्य उदाहरण के रूप में एक ही शब्दार्थ)। हालाँकि, यह उपयोगी है क्योंकि यह schema.org लिंकिंग आइटम को जोड़ने की अनुमति देता है, जिसमें लिंक करने के लिए इच्छित तत्व नहीं होते हैं, इसलिए आप उदाहरण के लिए बुक टू स्पोर्ट्सइवेंट या जो भी लिंक कर सकते हैं।

मैं अपने आप को यहाँ जवाब दे रहा हूँ बस अगर यह किसी और को भी इसी तरह की समस्या में मदद करता है, क्योंकि यह वास्तव में मेरी मदद नहीं करता है (हालांकि यह अंतिम-खाई का सहारा हो सकता है अगर कुछ बेहतर नहीं हुआ)

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.