여러 개의 분리 된 Microdata <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"나 관련 범위를 연결하는 데 무언가를 사용해야한다고 생각하지만 제대로 작동하지 않습니다. 보면 비슷한 질문은 이 경우에 도움을 did't.

업데이트 : 특히 일종의 참조를 통해 작동하는 솔루션을 찾고 있으며 모든 유형의 중첩을 통해 작동하지 않습니다. 또한 두 번째 (작동하지 않는) 예제의 순서는 동일하게 유지되어야합니다 (이벤트 우선, ExerciseAction 둘째). (내 통제 밖에서 몇 가지 이유가 있습니다).

특히 '작동합니다'는 항목이 서로 연결되어 있음을 보여주는 Google 리치 스 니펫 도구 로 정의됩니다 (첫 번째 작업 예에서와 같이)

답변:


9

itemref속성을 사용할 수 있습니다 .

로부터 마이크로 데이터 ( W3C 워킹 그룹 노트 사양) :

  • 4.2 기본 문법 :

    속성이있는 요소의 자손이 아닌 itemscope속성은 itemref속성을 사용하여 항목과 연관 될 수 있습니다 . 이 속성은 속성을 사용하여 요소의 하위를 크롤링하고 크롤링 할 요소의 ID 목록을 가져옵니다 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 (당 추가 요구 사항 ) : 부모 요소가 다른 항목을 지정하는 경우 (예를 들어, WebPagebody), 위의 솔루션은 작업 후하지 않기 때문에 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 rich snippets tool 에서 유효성 검사 ). 내가 할 수있는 것은 다른 itemscope에 복제되어 동일한 질문가진 비슷한 이름을 가진 몇 가지 다른 이름 = 값 쌍을 포함시키는 것입니다 . 그러나 나는 다른 itemscope를 포함시킬 수 없었습니다 – 그것은 의문입니다)
Matija Nalis

@MatijaNalis : 내 스 니펫을 답변에 추가했습니다.
unor sep

고마워, 그것은 내가 찾던 것과 거의 똑 같았습니다! 단순화 된 독립형 HTML 예제에서 원하는대로 서로 연결합니다. 불행히도 Google 리치 스 니펫 도구 는 "오류 : 페이지에 스키마의 일부가 아닌"event "속성이 포함되어 있습니다."라는보다 복잡한 예에서 오류를 발생시킵니다. (전체 페이지 이상의 상위 div가있다, 예를 들어 대한되는 문제가 하나 schema.org/Webpage )
마티 Nalis

그것을 고치는 방법에 대한 아이디어가 있습니까? 제거 에는 itemprop은 "이벤트"= schema.org/Event이 도움이 ... 다음 함께 itemscopes을 연결하지 않는 한하지 않습니다에서
마티 Nalis

@ Matatialis : 다른 스 니펫을 추가했지만이 문제를 해결하지 못할 수도 있습니다. 부모 WebPage마크 업 을 분해하고 itemref거기에서도 사용해야 하므로 관련없는 항목 유형을 자식으로 포함하지 않아야합니다. 아마도 다른 질문이 될 것입니다.
unor sep

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 구조를 닫아야하는 하위 템플릿에 속하지 않음)을 사용하거나 순서를 변경하지 않습니다 (다른 것들 중에서 표시 이유). 명확히하기 위해 질문을 업데이트했습니다. 또한 ExerciseAction은 자식 od 이벤트가 될 수 없으므로 (역전이 가능하므로) 답변 이 유효 하지 않으므로 서로 연결하기 위해 itemprop가 필요하지 않습니다.
Matija Nalis

@MatijaNalis 확인하지 않은 유일한 이유는 질문에 제공 한 텍스트를 복사했기 때문입니다. 이벤트가 과거 2002-02-02에 시작되도록 설정 되었기 때문에 오류가 발생합니다. 미래 날짜로 업데이트하면 작동합니다. 또한, 당신은 이제 당신이 어떤 종류의 중첩을 원하지 않는다는 것을 표시하는 질문을 업데이트했다는 것을 알고 있습니다. 그러나 원래 "이벤트"에 입력 한 데이터의 두 번째 부분이 " ExerciseAction "사업부, 여전히 작동합니다. 예를 들어, "startDate"를 내 답변에서 "ExerciseAction"닫기 div로 이동하면 여전히 작동합니다.
riseagainst

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>

또는 HTML5를 사용하는 경우 MAIN또는 ARTICLE요소 에서 사용할 수 있습니다 .


Guisasso에 대한 의견을 참조하십시오. 귀하의 답변은 거의 같은 이유로 작동하지 않습니다. 내 요구를 명확히하기 위해 질문을 업데이트했습니다.
Matija Nalis

1

또한 다음과 같이 사용할 수있는 additionalType 속성을 실행했습니다.

<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>

그것은 내 주요 문제 (ExerciseAction / 이벤트 자녀-부모 관계를 재정렬 할 수 없음)에 도움이되지만 다른 문제 (그 div를 중첩 할 수 없음)에는 도움이되지 않으며 일종의 혼란 스럽습니다 ( 원래 작업 예제와 동일한 의미). 그러나 링크 할 의도 요소가없는 schema.org 항목 유형을 링크 할 수 있으므로 유용합니다. 예를 들어 Book to SportsEvent 등을 링크 할 수 있습니다.

나는 그것이 실제로 나에게 도움이되지 않기 때문에 비슷한 문제를 가진 다른 사람을 도울 수 있도록 여기에 나 자신에게 대답하고 있습니다 (아무것도 더 나올 수 없다면 최후의 수단 일지 모릅니다)

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.