Sử dụng XPath

30/11/2019
Định dạng XML của YouTube sẽ được thay bằng DDEX (chỉ âm nhạc) và mẫu CSV (tất cả các ngành). YouTube không khuyến khích bất kỳ hoạt động triển khai mới nào về định dạng XML của YouTube. Bạn chỉ nên sử dụng trang này làm tài liệu tham chiếu cho các hoạt động triển khai hiện có. Hãy truy cập vào phần Sử dụng nguồn cấp dữ liệu DDEX của YouTube để biết thêm thông tin về định dạng mới.
Chỉ những đối tác sử dụng Trình quản lý nội dung của YouTube để quản lý nội dung có bản quyền mới có thể dùng các tính năng mô tả trong bài viết này.

Nguồn cấp nội dung sử dụng cú pháp XPath để xác định mục và các mục có liên quan trong một mối quan hệ. Bạn có thể chỉ định XPath xác định một phần tử hoặc nhóm phần tử trong nguồn cấp dữ liệu XML hiện tại hoặc xác định các thực thể đã tạo trước đó – nội dung, tham chiếu, v.v. – được lưu trữ trong cơ sở dữ liệu của YouTube.

Xin lưu ý các quy tắc sau khi xây dựng XPath:

  • YouTube có thể xử lý XPath tham chiếu đến các thực thể được lưu trữ trước khi tạo mục mới được chỉ định trong nguồn cấp dữ liệu. Như vậy, nguồn cấp dữ liệu của bạn sẽ không sử dụng XPath tham chiếu đến một thực thể được lưu trữ nếu thực thể đó thực sự đang được tạo trong cùng một nguồn cấp dữ liệu.

    Ví dụ: nếu nguồn cấp dữ liệu của bạn tạo một nội dung mới thì bạn sẽ không sử dụng XPath bên ngoài xác định nội dung đó bằng ID tùy chỉnh và loại nội dung vì đường dẫn đó có thể được xử lý trước khi thực sự tạo nội dung mới. Thay vào đó, hãy sử dụng đường dẫn xác định nội dung dưới dạng mục trong nguồn cấp dữ liệu sử dụng giá trị thuộc tính thẻ, giá trị trường hoặc cú pháp bình thường.

  • Bằng cách gán ID tùy chỉnh duy nhất cho nội dung và chỉ định giá trị thuộc tính thẻ duy nhất cho các thực thể được chỉ định trong một nguồn cấp dữ liệu, bạn có thể đảm bảo rằng XPath của bạn sẽ xác định các mục cụ thể, cá nhân.

  • YouTube hỗ trợ cú pháp XPath cho các đường dẫn xác định các mục trong một nguồn cấp dữ liệu nhiều hơn nhiều so với các đường dẫn xác định các thực thể được lưu trữ.

Hướng dẫn sau đây giải thích cú pháp được hỗ trợ cho XPath trong nguồn cấp dữ liệu của bạn.

  • Xác định các mục trong một nguồn cấp dữ liệud

    YouTube cung cấp hỗ trợ XPath chuyên sâu để xác định các mục trong nguồn cấp dữ liệu. XPath dành cho một mục trong nguồn cấp dữ liệu bắt đầu bằng /feed. Các ví dụ dưới đây minh họa một số kỹ thuật trong các kỹ thuật khác nhau này:

    • Thuộc tính tag cho phép bạn gán giá trị để nhận dạng duy nhất mỗi mục trong nguồn cấp dữ liệu của bạn. XPath trong một mối quan hệ sau đó có thể sử dụng giá trị thuộc tính tag để xác định các mục được đưa vào mối quan hệ đó. Tất cả các phần tử con của <feed> có thể sử dụng thuộc tính tag, bao gồm cả <asset>, <file>, <ownership>, v.v.

      Trong nguồn cấp dữ liệu mẫu dưới đây, nhà cung cấp sử dụng cùng một giá trị thuộc tính tag để xác định nội dung, tệp tham chiếu và video YouTube. Phương pháp này giả định rằng mỗi nội dung có chính xác một tệp tham chiếu được nhà cung cấp cung cấp dưới dạng video YouTube. (Mỗi tệp phải có một tên tệp duy nhất).

      <asset tag="foo.mpg">   
         ... 
       
      <file tag="foo.mpg" type="video">
         <filename>foo.mpg
      
      <video tag="foo.mpg">
         ... 
      
      <relationship>
         <item path="/feed/asset[@tag='foo.mpg']" />   
         <related_item path="/feed/file[@tag='foo.mpg']" /> 
       
      <relationship>   
        <item path="/feed/file[@tag='foo.mpg']" />   
        <related_item path="/feed/video[@tag='foo.mpg']" /> 
       
    • Giá trị trường cho phép bạn xác định các mục trong nguồn cấp dữ liệu dựa trên các giá trị trường XML có thể hoặc không thể là duy nhất. Đoạn mã nguồn cấp dữ liệu dưới đây thể hiện mối quan hệ mẫu sử dụng giá trị trường để xác định các thành phần của mối quan hệ:

      <relationship>
         <item path="/feed/rights_admin[@type='match']" />
         <item path="/external/rights_policy[@name='Block everywhere']" />   
         <related_item path="/feed/asset[@type='episode'][season='2'][show_custom_id='BC']" /> 
       
      <relationship>   
         <item path="/feed/rights_admin[@type='match']" />
         <item path="/external/rights_policy[@name='Monetize everywhere']" />   
         <related_item path="/feed/asset[@type='episode'][season='1'][show_custom_id='BC']" /> 
       

      Những mối quan hệ này chỉ định thông tin sau:

      • Mối quan hệ đầu tiên đặt chính sách đối sánh thành "Block everywhere" cho tất cả các tập trong phần 2 của chương trình cụ thể.
      • Mối quan hệ thứ hai đặt chính sách đối sánh thành "Monetize everywhere" cho tất cả các tập trong phần 1 của cùng chương trình đó.
    • Cú pháp bình thường cho phép bạn xác định mục dựa trên vị trí của nó trong nguồn cấp dữ liệu. Các mối quan hệ trong đoạn mã XML dưới đây liên kết phần tử <asset> đầu tiên trong nguồn cấp dữ liệu với phần tử <file> đầu tiên và thứ hai trong nguồn cấp dữ liệu. Nó cũng liên kết phần tử <file> đầu tiên với phần tử <video> đầu tiên và phần tử <file> thứ hai với phần tử <video> thứ haielement.

      <relationship>
         <item path="/feed/asset[1]" />   
         <related_item path="/feed/file[1]" />   
         <related_item path="/feed/file[2]" /> 
       
      <relationship>   
         <item path="/feed/file[1]" />   
         <related_item path="/feed/video[1]" /> 
       
      <relationship>   
         <item path="/feed/file[2]" />
         <related_item path="/feed/video[2]" /> 
       

      Phương pháp này có thể hữu ích nếu mã của bạn chọn tất cả thông tin cho một nội dung, bao gồm cả thông tin siêu dữ liệu, tệp tham chiếu và video YouTube, sau đó ghi thông tin đó vào nguồn cấp dữ liệu XML trước khi tiếp tục đến nội dung tiếp theo. Mã giả dưới đây minh họa cách hoạt động của quá trình tạo nguồn cấp dữ liệu này:

      var assetCount = 0;
      var fileCount = 0; 
      var videoCount = 0;
        
      var query = "select metadata_fields, files, video_data from DB for assets";
      
      for asset in query->results {
         assetCount++;
         add asset metadata (<asset>) to feed;
         for file in asset's reference_files {
           fileCount++;
           add file information (<file>) to feed;
           add relationship to feed where asset XPath = "/file/asset[assetCount]"
                                       and file XPath = "/feed/file[fileCount]"
           if you are creating a YouTube video from the file {
             videoCount++;
             add video data (<video>) to feed
             add relationship to feed where file XPath = "/file/asset[fileCount]"
                                       and video XPath = "/feed/file[videoCount]"
           }
         }
       } 
  • Xác định các mục khác trong cơ sở dữ liệu của YouTube

    Nguồn cấp dữ liệu của YouTube cũng cho phép bạn xác định các thực thể được lưu trữ trong cơ sở dữ liệu của YouTube. Danh sách sau đây xác định một số trường hợp sử dụng để xác định các thực thể bên ngoài:

    • Chỉ định nội dung hiện có nhúng một nội dung mới xác định
    • Cập nhật siêu dữ liệu cho nội dung hiện có.
    • Liên kết tệp tham chiếu bổ sung với nội dung hiện có.
    • Sử dụng chính sách đã lưu cho xác nhận quyền sở hữu hoặc làm chính sách sử dụng hoặc chính sách đối sánh mặc định cho tham chiếu.

    XPath trong nguồn cấp dữ liệu XML của bạn xác định thực thể được lưu trữ – nội dung, chính sách đã lưu, v.v. – sẽ bắt đầu bằng /external. Danh sách sau đây xác định XPath mà nguồn cấp dữ liệu của bạn có thể sử dụng để xác định các thực thể được lưu trữ:

    • Nội dung

      • /external/asset[@id='ASSET_ID'] – YouTube gán ID nội dung để nhận dạng duy nhất mỗi nội dung. Nếu nguồn cấp dữ liệu tạo nội dung, YouTube sẽ cung cấp ID nội dung mới trong báo cáo trạng thái cho nguồn cấp dữ liệu.

      • /external/asset[@custom_id='CUSTOM_ID_FOR_ASSET'][@type='ASSET_TYPE'] – XPath này xác định nội dung bằng ID tùy chỉnh mà bạn đã cung cấp cho nội dung cũng như loại nội dung. Bạn chỉ nên sử dụng phương pháp này để xác định nội dung nếu ID tùy chỉnh của bạn xác định duy nhất nội dung của bạn.

    • Tham chiếu

      • /external/reference[@id='REFERENCE_ID'] – YouTube gán ID tham chiếu để xác định duy nhất mỗi tham chiếu. Nếu nguồn cấp dữ liệu tạo tham chiếu, YouTube sẽ cung cấp ID tham chiếu mới trong báo cáo trạng thái cho nguồn cấp dữ liệu đó.

    • Video

      • /external/video[@id='VIDEO_ID'] – YouTube gán ID video để xác định duy nhất mỗi video YouTube. Nếu nguồn cấp dữ liệu tạo video, YouTube sẽ cung cấp ID video mới trong báo cáo trạng thái cho nguồn cấp dữ liệu đó.

    • Người quản lý quyền

      • /external/rights_admin[owner='True'] – XPath này cho biết rằng các quy tắc quản lý quyền được sử dụng trong xác nhận quyền sở hữu hoặc mối quan hệ phản ánh quy tắc quyền sở hữu được chỉ định cho nội dung đã xác định trong xác nhận quyền sở hữu hoặc mối quan hệ.

      • /external/rights_admin[owner='True'][type='RIGHTS_ADMIN_TYPE'] – XPath này cho biết rằng đối với video do đối tác tải lên hay người dùng tải lên thì quy tắc quản lý quyền trong xác nhận quyền sở hữu hoặc mối quan hệ phản ánh quy tắc quyền sở hữu được chỉ định cho nội dung đã xác định trong xác nhận quyền sở hữu hoặc mối quan hệ đó.

    • Chính sách quyền

      • /external/rights_policy[name='SAVED_POLICY_NAME'] – XPath này xác định chính sách đã lưu theo tên mà bạn đã cấp cho chính sách. Nếu bạn định xác định các chính sách đã lưu trong nguồn cấp dữ liệu XML của bạn, hãy đảm bảo rằng chính sách của bạn có tên duy nhất.

    Các mẫu XML cho XPath bên ngoài

    Các mẫu dưới đây minh họa một số trường hợp sử dụng chung cho XPath bên ngoài:

    • Sử dụng chính sách đã lưu làm chính sách đối sánh hoặc chính sách sử dụng mặc định

      Trong ví dụ này, thẻ <relationship> xác định nội dung đang được liên kết với người quản lý quyền và một chính sách đã lưu được xác định bằng XPath bên ngoài.

      <relationship>
         <item path="/feed/rights_admin[1]"/>
         <item path="/external/rights_policy[@name='Monetize Everywhere']"/>
         <related_item path="/feed/asset[@tag='foo.mpg']"/>
        
    • Tạo xác nhận quyền sở hữu bằng chính sách đã lưu

      Trong ví dụ này, thẻ <claim> xác định video đang được xác nhận quyền sở hữu, nội dung khớp với video, người quản lý nội dung và chính sách mà người quản lý đang áp dụng. Chính sách này là chính sách đã lưu được xác định bằng XPath bên ngoài.

      <claim type="audiovisual"
              asset="/feed/asset[@tag='foo.mpg']"
              video="/feed/video[@tag='foo.mpg']"
              rights_admin="/feed/rights_admin[@type='match']"
              rights_policy="/external/rights_policy[@name='Monetize Everywhere']"/> 

* Nguồn: Youtube