Sự khác biệt giữa một phần tử và một nút trong XML là gì?


370

Tôi đang làm việc với Java với XML và tôi đang tự hỏi; sự khác biệt giữa một yếu tố và một nút là gì?


7
Chắc chắn hãy xem w3c . Datamodel rất dễ hiểu - ngay cả đối với tôi!
xtofl

15
Nhận xét tuyệt vời từ forum.asp.net/t/443912.aspx/1#443940 : Giống như giữa trái cây và táo. Mọi XmlE bổ sung là XmlNode, nhưng không phải mọi XmlNode đều là XmlEuity. XmlEuity chỉ là một loại XmlNode. Những người khác là XmlAttribution, XmlText, v.v.
atconway

2
Một phần tử là một phần của định nghĩa chính thức của tài liệu XML được định dạng tốt, trong khi một nút được định nghĩa là một phần của Mô hình đối tượng tài liệu để xử lý tài liệu XML.
Jool

Câu trả lời:


259

Đối tượng Node là kiểu dữ liệu chính cho toàn bộ DOM.

Một nút có thể là nút phần tử, nút thuộc tính, nút văn bản hoặc bất kỳ loại nút nào khác được giải thích trong chương "Kiểu nút".

Một phần tử XML là mọi thứ từ (bao gồm) thẻ bắt đầu của phần tử đến (bao gồm) thẻ kết thúc của phần tử.


122
Bây giờ tôi đã hiểu câu trả lời ... Quy ước thật ngu ngốc. Các từ nên là cách khác xung quanh. Trong ngôn ngữ tiếng Anh tự nhiên, một "yếu tố" là thứ gì đó là khối xây dựng cơ bản nhất, trong đó mọi thứ khác được xây dựng. tức là một yếu tố trong tiếng Anh tự nhiên thì tổng quát hơn ...
Sam Svenbjorgchristiensensen

11
@Juan Mendes: Đó là những gì họ theo DOM, nhưng quan điểm của Sam là DOM coi các nút cơ bản (nguyên thủy) hơn các phần tử, khi "phần tử" thực sự đề cập đến khối xây dựng cơ bản nhất trong tiếng Anh.
BoltClock

16
@SamSvenbjorgchristiensensen điều đó không hoàn toàn chính xác. Các nguyên tố có thể được phân tách sâu hơn thành 'các bộ phận cấu thành' như proton, neutron và electron, từ đó có thể bị phá vỡ thành quark, neutrino, v.v ... Tốt hơn là hiểu "nút" nghĩa là gì trong lý thuyết đồ thị , và sau đó bạn sẽ hiểu lý do tại sao các nhà thiết kế XML chọn tên đó (DOM chỉ là một biểu đồ phân cấp).
Les Hazlewood

20
@LesHazlewood Trên thực tế, từ "yếu tố" đã được sử dụng để mô tả các yếu tố vật lý (hydrogen, helium, vv) vì họ đã nghĩ những điều đã tách. Chỉ sau đó họ phát hiện ra rằng họ đã sai - quá muộn để đổi tên; ) Tôi đồng ý với Sam, cách họ đặt tên và phân biệt các yếu tố dom so với các nút là khó hiểu và suy nghĩ kém (như nhiều thông số html là).
BT

3
@BT đối số của bạn sẽ giữ nước nếu ủy ban đặc tả XML sống ở Hy Lạp cổ đại :) Họ đã không, và như vậy, định nghĩa (từ điển) hiện đại của yếu tố (rõ ràng) đại diện cho các bộ phận cấu thành có ý nghĩa. Thêm vào đó với kiến ​​thức lý thuyết đồ thị về các nút và thực sự không có nhiều chỗ để diễn giải.
Les Hazlewood

68

Các thông số kỹ thuật khác nhau của W3C xác định các loại "Nút" khác nhau.

Do đó, đặc tả DOM định nghĩa các loại nút sau:

  • Document- Element(tối đa một), ProcessingInstruction, Comment,DocumentType
  • DocumentFragment - Element, ProcessingInstruction, Comment, Text, CDATASection,EntityReference
  • DocumentType - không có con
  • EntityReference - Element, ProcessingInstruction, Comment, Text, CDATASection,EntityReference
  • Element- Element, Text, Comment, ProcessingInstruction, CDATASection,EntityReference
  • Attr- Text,EntityReference
  • ProcessingInstruction - không có con
  • Comment - không có con
  • Text - không có con
  • CDATASection - không có con
  • Entity- Element, ProcessingInstruction, Comment, Text, CDATASection,EntityReference
  • Notation - không có con

Các XML Infoset (được sử dụng bởi XPath) có một tập nhỏ các nút:

  • Mục thông tin tài liệu
  • Mục thông tin thành phần
  • Mục thông tin thuộc tính
  • Xử lý mục thông tin
  • Các mục thông tin tham khảo thực thể chưa được mở rộng
  • Mục thông tin nhân vật
  • Bình luận mục thông tin
  • Mục thông tin khai báo loại tài liệu
  • Mục thông tin thực thể chưa được chỉnh sửa
  • Mục thông tin ký hiệu
  • Mục thông tin không gian tên
  • XPath có các loại nút sau:

    • nút gốc
    • nút phần tử
    • nút văn bản
    • nút thuộc tính
    • nút không gian tên
    • xử lý các nút chỉ dẫn
    • nút bình luận

    Câu trả lời cho câu hỏi của bạn " Sự khác biệt giữa một yếu tố và nút " là gì:

    An element is a type of node. Many other types of nodes exist and serve different purposes.


    29

    Nút là một phần của cây DOM, Phần tử là một loại Nút cụ thể

    ví dụ <foo> This is Text </foo>

    Bạn có một phần tử foo, (cũng là một nút, vì phần tử kế thừa từ nút) và một nút văn bản 'Đây là văn bản', là con của phần tử / nút foo


    7
    Ví dụ ngắn này cho tôi hiểu thêm sau đó câu trả lời được chọn.
    KMC

    27

    Một nút có thể là một số loại khác nhau: một số văn bản, một nhận xét, một phần tử, một thực thể, vv Một phần tử là một loại nút cụ thể.


    15

    Như được mô tả trong các thông số kỹ thuật XML khác nhau , một elementcái bao gồm thẻ bắt đầu và thẻ kết thúc và nội dung ở giữa hoặc xen kẽ một thẻ phần tử trống (không có thẻ nội dung hoặc thẻ kết thúc). Nói cách khác, đây là tất cả các yếu tố:

    <foo> stuff </foo>
    <foo bar="baz"></foo>
    <foo baz="qux" />

    Mặc dù bạn nghe thấy "nút" được sử dụng với nghĩa gần giống nhau, nhưng nó không có định nghĩa chính xác cho mỗi thông số kỹ thuật XML. Nó thường được sử dụng để chỉ các nút của những thứ như DOM, có thể liên quan chặt chẽ với XML hoặc sử dụng XML để thể hiện chúng.


    11

    Một tài liệu xml được làm bằng các yếu tố lồng nhau. Một phần tử bắt đầu tại thẻ mở của nó và kết thúc tại thẻ đóng của nó . Bạn có thể đã nhìn thấy <body></body>trong html. Tất cả mọi thứ giữa các thẻ mở và đóng là nội dung của phần tử . Nếu một phần tử được xác định bởi thẻ tự đóng (ví dụ <br/>:) thì nội dung của nó trống.

    Thẻ mở cũng có thể chỉ định các thuộc tính , ví dụ. <p class="rant">. Trong ví dụ này, tên thuộc tính là 'class' và giá trị của nó là 'rant'.

    Ngôn ngữ XML không có thứ gọi là 'nút' . Đọc thông số kỹ thuật , từ này không xảy ra.

    Một số người sử dụng từ 'nút' một cách không chính thức để chỉ phần tử, điều này gây nhầm lẫn bởi vì một số trình phân tích cú pháp cũng cho từ này có nghĩa kỹ thuật (xác định 'nút văn bản' và 'nút phần tử'). Ý nghĩa chính xác phụ thuộc vào trình phân tích cú pháp, vì vậy từ này được định nghĩa sai trừ khi bạn nêu rõ trình phân tích cú pháp bạn đang sử dụng. Nếu bạn có nghĩa là yếu tố, hãy nói 'yếu tố' .


    Từ này xảy ra: "(nghĩa là, mỗi nút lá trong cây cú pháp cho biểu thức chính quy)". Đó là trong một phụ lục không quy tắc, nhưng nó vẫn xảy ra. Có thuật ngữ được sử dụng như là nút trong cây phân tích cú pháp.
    thắp sáng

    Ngay cả khi người ta cho rằng định nghĩa XML không đề cập đến các nút, Mô hình Đối tượng Tài liệu (DOM) được định nghĩa để giải thích và thao tác lập trình của XML (bởi cùng một tổ chức tiêu chuẩn) thực sự xác định và sử dụng thuật ngữ "nút". Câu trả lời này không giúp phân biệt các thuật ngữ và cũng không giúp bỏ qua các cách sử dụng khác nhau bằng cách khẳng định rằng chúng có nghĩa giống nhau.
    C Perkins

    9

    Một nút là lớp cơ sở cho cả các thành phần và thuộc tính (và về cơ bản tất cả các biểu diễn XML khác).


    7

    Phần tử là loại nút duy nhất có thể có các nút con và thuộc tính.

    Tài liệu cũng có các nút con, NHƯNG
    không có thuộc tính, không có văn bản, chính xác là một phần tử con.


    2

    Một nút được định nghĩa là:

    đơn vị nhỏ nhất của một cấu trúc hoàn chỉnh hợp lệ trong một tài liệu.

    hoặc như:

    Một đối tượng trong chế độ xem dạng cây đóng vai trò là vùng chứa để chứa các đối tượng liên quan.

    Bây giờ chúng là nhiều loại nút khác nhau như một nút phần tử, nút thuộc tính, v.v.


    1

    Bây giờ tôi biết, phần tử là một trong các nút

    Tất cả các loại nút ở đây " http://www.w3schools.com/dom/dom_nodetype.asp "

    Phần tử nằm giữa thẻ bắt đầu và kết thúc trong thẻ kết thúc

    Vì vậy, nút văn bản là một nút, nhưng không phải là một yếu tố.


    0

    Một phần tử là một loại nút như các thuộc tính, văn bản, vv


    -3

    Phần tử XML là một Nút XML nhưng có các phần tử bổ sung như các thuộc tính.

    <a>Lorem Ipsum</a>  //This is a node
    
    <a id="sample">Lorem Ipsum</a>  //This is an element

    Tôi không cho rằng bạn có bất kỳ nguồn nào cho khiếu nại này? Ví dụ, tiêu chuẩn XML định nghĩa thuật ngữ "phần tử" là thẻ phần tử trống hoặc mọi thứ từ và bao gồm thẻ bắt đầu đến và bao gồm thẻ kết thúc. Thẻ bắt đầu và thẻ phần tử trống không cần phải có bất kỳ yếu tố nào. Cả hai ví dụ của bạn là các yếu tố. Thuật ngữ "nút" được định nghĩa ở nơi khác, trong DOM là về một mô hình đối tượng chứ không phải trong chính văn bản.
    thắp sáng

    -7

    nút và phần tử giống nhau. Mỗi phần tử là một nút, nhưng không phải mọi nút đều phải là một phần tử.


    9
    Vì "không phải mọi nút phải là một phần tử", yêu cầu "nút & phần tử giống nhau" là sai.
    glglgl

    1
    Ngoài ra mô tả của bạn là sai, nó cũng không hữu ích. Điều duy nhất bạn đúng là có một số khác biệt giữa các điều khoản, nhưng câu hỏi là sự khác biệt đó là gì.
    thắp sáng
    Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
    Licensed under cc by-sa 3.0 with attribution required.