2012-05-14 58 views

Trả lời

19

Trong mã XHTML, người ta có thể sử dụng không gian tên để phân biệt các ngôn ngữ dựa trên XML khác có trong trang web. Ở đây, không gian tên "svg" được sử dụng trước thẻ "svg".

namespace:tagname 

này có thể hữu ích trong trường hợp hai thẻ (ví dụ, trong XHTML và SVG) có cùng tên và bạn muốn chính xác định cái nào bạn tham khảo. Các thẻ có thể được chỉ định với thuộc tính xmlns. Như bạn đã biết, tài liệu XHTML bắt đầu với

<html xmlns="http://www.w3.org/1999/xhtml"> 

bạn có thể chỉ định các tiền tố như

<html xmlns:prefix="http://www.w3.org/1999/xhtml"> 

và sau đó bạn sẽ sử dụng

<prefix:head> 
    <prefix:title></prefix:title> 
</prefix:head> 

Tương tự bạn có thể sử dụng

<svg xmlns="http://www.w3.org/2000/svg"> 

thay vì chỉ <svg> khi bao gồm đồ họa svg của bạn. Sau đó, tất cả các thẻ svg sẽ bắt đầu bằng tiền tố svgprefix. Tuy nhiên, nếu bạn có nút SVG con, chúng cũng sẽ cần thuộc tính xmlns này để được xác định. Trong trường hợp này, việc xác định tiền tố có thể sẽ dễ dàng hơn.

+1

Được bỏ phiếu; mặc dù thông tin này là chính xác và có liên quan, câu hỏi của OP có liên quan đến một chuỗi JavaScript với ứng dụng cụ thể trong D3.js, chứ không phải đánh dấu XML. – Phrogz

+3

@Phrogz Tôi kính trọng không đồng ý. Câu hỏi đặt ra là: "svg: svg là gì?" và tôi trả lời chính xác câu hỏi đó, kết quả của câu trả lời này được chấp nhận. Op nói rằng họ đã thấy nó trong mã D3 và HTML, không chỉ D3 như bạn ngụ ý. Dường như với tôi rằng op nhận thức được rằng các hàm 'append' nhận được một tên tag, chỉ không biết loại thẻ tên' svg: svg' là gì, đoán nó là một plugin SVG.Bạn không thể nói đây là vấn đề JS, vì câu hỏi không được gắn thẻ 'JavaScript'. – Imp

+0

Tôi tôn trọng sự bất đồng tôn trọng của bạn. :) Đối với tôi mã được đề cập '.append (" svg: svg ")' cùng với một đề cập đến D3.js làm cho nó rõ ràng là một câu hỏi mã hóa. Tuy nhiên, cho điểm tốt của bạn về việc nhìn thấy nó "trong HTML" tôi sẽ loại bỏ downvote của tôi. – Phrogz

16

Từ tài liệu cho D3.js's append() method:

tên thẻ của phần tử có thể có một tiền tố namespace, chẳng hạn như "svg: nhắn tin" để tạo ra một "văn bản" phần tử trong không gian tên SVG. Theo mặc định, D3 hỗ trợ các không gian tên svg, xhtml, xlink, xml và xmlns. Các không gian tên bổ sung có thể được đăng ký bằng cách thêm vào d3.ns.prefix.

Lưu ý đặc biệt là các tiền tố namespace trong D3.js là không dựa trên tài liệu của bạn, nhưng một bản đồ được xác định trước các tiền tố chung cho URL namespace thực tế.

Namespaces là cách một tài liệu XML (trong đó bao gồm XHTML nhưng không phải HTML) có thể bao gồm hai thuộc tính hoặc các yếu tố có cùng tên (ví dụ: "tội lỗi" như trong tính toán sin toán học so với "tội lỗi" như trong đạo đức thất bại) mà không có xung đột. Việc đặt phần tử <svg> vào tài liệu XHTML không có ý nghĩa trừ khi phần tử SVG đó nằm trong số SVG namespace.

Để biết thêm thông tin, hãy đọc Namespaces in XML.

+5

Chỉ dành cho bản ghi, việc đặt tên là tùy chọn trong d3 kể từ ngày 23 tháng 11 năm 2011 – Biovisualize