Có quy ước đặt tên tiêu chuẩn cho các phần tử XML không? [đóng cửa]


96

Có tiêu chuẩn nào, trên thực tế hay cách khác, cho các tài liệu XML không? Ví dụ: cách "tốt nhất" để viết thẻ là gì?

<MyTag />
<myTag />
<mytag />
<my-tag />
<my_tag />

Tương tự như vậy nếu tôi có một giá trị được liệt kê cho một thuộc tính tốt hơn

<myTag attribute="value one"/>
<myTag attribute="ValueOne"/>
<myTag attribute="value-one"/>

2
Về mặt kỹ thuật, bạn cũng có thể sử dụng <my.tag />. Có thể không phải là một ý tưởng tốt trong một số hoàn cảnh ...
PhiLho


Có một số "tiêu chuẩn" tìm thấy trực tuyến ..
user2864740

Câu trả lời:


46

Tôi nghi ngờ các giá trị phổ biến nhất sẽ là camelCased - tức là

<myTag someAttribute="someValue"/>

Đặc biệt, các khoảng trắng gây ra một số trục trặc nếu được trộn với các trình tạo mã (tức là để [de] tuần tự hóa xml thành các đối tượng), vì không nhiều ngôn ngữ cho phép các enums có khoảng trắng (yêu cầu ánh xạ giữa hai ngôn ngữ này).


35
Hm ... câu trả lời hay nhất ... Tôi nghĩ đó là một câu trả lời đàng hoàng, nhưng nó chỉ là một ý kiến. Có một số loại tài liệu tham khảo sẽ là tốt.
Hamish Grubijan,

4
Tôi không đồng ý, tôi không quen xem XML với hộp đựng lạc đà.
Rafa

Tôi biết đây là một câu trả lời cũ, nhưng hầu hết Microsoft XML mới hơn mà tôi đã thấy có xu hướng không đồng ý với lựa chọn định dạng này. Nhưng sau đó IIS thích dot.naming như vậy ..
user2246674

4
Như mọi người đề cập đó là cá nhân, nhưng tôi làm theo cách tiếp cận của bạn vì tôi luôn xác định XML của mình bằng cách sử dụng XMLSchema và XMLSchema tuân theo cách tiếp cận này. w3.org/2001/XMLSchema.xsd . Đối với tôi, nó không liên quan gì đến ngôn ngữ lập trình. Chúng tôi sử dụng XML vì nó là một tiêu chuẩn giao diện có thể hoạt động được. Ngôn ngữ lập trình chỉ là một chi tiết triển khai và mỗi ngôn ngữ có quy ước riêng.
dan carter

2 xu của tôi - Tôi đã thấy CamelCase, và tất cả các chữ thường; hiếm khi tất cả chữ hoa (HTML cũ) và tôi đã thấy chữ thường. Tôi không thể nhớ đã bao giờ nhìn thấy camelBack. Tôi thích CamelCase hoặc chữ thường. Các thuộc tính, tuy nhiên, tôi có xu hướng thấy tất cả các chữ thường.
Kit10

30

Quy tắc đặt tên XML

Các phần tử XML phải tuân theo các quy tắc đặt tên sau:

    - Element names are case-sensitive 
    - Element names must start with a letter or underscore
    - Element names cannot start with the letters xml(or XML, or Xml, etc) 
    - Element names can contain letters, digits, hyphens, underscores, and periods 
    - Element names cannot contain spaces

Bất kỳ tên nào cũng có thể được sử dụng, không có từ nào được đặt trước (trừ xml).

Thực tiễn Đặt tên Tốt nhất

    - Create descriptive names, like this: <person>, <firstname>, <lastname>.
    - Create short and simple names, like this: <book_title> not like this: <the_title_of_the_book>.
    - Avoid "-". If you name something "first-name", some software may think you want to subtract "name" from "first".
    - Avoid ".". If you name something "first.name", some software may think that "name" is a property of the object "first".
    - Avoid ":". Colons are reserved for namespaces (more later).
    - Non-English letters like éòá are perfectly legal in XML, but watch out for problems if your software doesn't support them.

Kiểu đặt tên

Không có kiểu đặt tên nào được xác định cho các phần tử XML. Nhưng đây là một số thường được sử dụng:

    - Lower case    <firstname> All letters lower case
    - Upper case    <FIRSTNAME> All letters upper case
    - Underscore    <first_name>    Underscore separates words
    - Pascal case   <FirstName> Uppercase first letter in each word
    - Camel case    <firstName> Uppercase first letter in each word except the first

tham khảo http://www.w3schools.com/xml/xml_elements.asp


13

Đối với tôi, nó giống như thảo luận về phong cách mã cho một ngôn ngữ lập trình: một số sẽ tranh luận về một phong cách, những người khác sẽ bảo vệ một phương án thay thế. Sự đồng thuận duy nhất mà tôi thấy là: "Hãy chọn một phong cách và nhất quán"!

Tôi chỉ lưu ý rằng rất nhiều phương ngữ XML chỉ sử dụng tên viết thường (SVG, Ant, XHTML ...).

Tôi không hiểu quy tắc "không có khoảng trắng trong giá trị thuộc tính". Bằng cách nào đó, nó gửi đến cuộc tranh luận "những gì để đưa vào các thuộc tính và những gì để đặt dưới dạng văn bản?".
Có thể đây không phải là những ví dụ tốt nhất, nhưng có một số định dạng XML nổi tiếng sử dụng dấu cách trong các thuộc tính:

  • XHTML, đặc biệt là thuộc tính lớp (bạn có thể đặt hai hoặc nhiều lớp) và tất nhiên là thuộc tính alt và tiêu đề.
  • SVG, ví dụ như thuộc tính d của thẻ đường dẫn.
  • Cả hai đều có thuộc tính style ...

Tôi không hiểu đầy đủ các lập luận chống lại thực tiễn (dường như chỉ áp dụng cho một số tập quán) nhưng ít nhất nó là hợp pháp và được sử dụng khá rộng rãi. Với những hạn chế, rõ ràng.

Ồ, và bạn không cần dấu cách trước dấu gạch chéo tự động đóng. :-)


Đối số chống lại dấu cách là, và điều này chỉ vì nó đã được hỏi cụ thể trong câu hỏi, nếu giá trị được liệt kê thì để hỗ trợ phân tích cú pháp, không nhiều ngôn ngữ hỗ trợ liệt kê với dấu cách, nhưng nhiều người trong chúng ta sử dụng XML trong C / C ++, C # , hoặc Java (ngôn ngữ tôi sử dụng, nhưng không giới hạn) thường sẽ ánh xạ các giá trị thuộc tính thành kiểu liệt kê. Sau đó, chúng ta có thể chỉ cần phân tích cú pháp một từ thành bản đồ / từ điển (hoặc dễ dàng hơn trong trường hợp của Java và C #). Cuối cùng, tôi đồng ý rằng nó dường như là một vấn đề của sự nhiệt tình hơn là một tiêu chuẩn. Tôi chỉ đơn giản theo triết lý "khi ở Rome".
Kit10

12

Tôi ưu tiên TitleCase cho tên phần tử và camelCase cho các thuộc tính. Không có dấu cách cho cả hai.

<AnElement anAttribute="Some Value"/>

Ngoài ra, tôi đã tìm kiếm nhanh các Phương pháp hay nhất trong XML và tìm ra liên kết khá thú vị này: Các lược đồ XML: Các Phương pháp Tốt nhất .


8

Tôi có xu hướng ưu tiên thẻ chữ thường hoặc thẻ camelcase và vì các thuộc tính thường phải phản ánh giá trị dữ liệu - không phải nội dung - tôi sẽ gắn bó với một giá trị có thể được sử dụng làm tên biến trong bất kỳ nền tảng / ngôn ngữ nào có thể quan tâm, tức là tránh khoảng trắng nhưng loại khác hai hình thức thể ổn


1 cho suy nghĩ về biến / tên hàm
Ates Goral

@downvoter: làm ơn giải thích giúp tôi với.
annakata

8

Đó là chủ quan, nhưng nếu có hai từ trong thẻ phần tử, khả năng đọc có thể được tăng cường bằng cách thêm dấu gạch dưới giữa các từ (ví dụ <my_tag>) thay vì không sử dụng dấu phân tách. Tham khảo: http://www.w3schools.com/xml/xml_elements.asp . Vì vậy, theo w3schools câu trả lời sẽ là:

<my_tag attribute="some value">

Giá trị không cần sử dụng dấu gạch dưới hoặc dấu phân cách, vì bạn được phép có khoảng trắng trong các giá trị thuộc tính nhưng không được phép sử dụng trong tên thẻ phần tử.


2
+1 vì bạn đã trích dẫn tài liệu tham khảo có phần "Các phương pháp đặt tên hay nhất" (không chỉ là ý kiến)
Fuhrmanator

2
@Fuhrmanator Bản thân "tài liệu tham khảo" đó là một ý kiến, mặc dù nó cung cấp một số lý do. Nó không phải là một tiêu chuẩn theo bất kỳ phương tiện nào - và (mặc dù nó ít khủng khiếp hơn nhiều so với trước đây) tôi không khuyến khích hoặc sử dụng w3schools làm "tài liệu tham khảo". Có nhiều nguồn gốc và toàn diện hơn.
user2864740 18/12/14

@ user2864740 chẳng hạn? Bạn đã hoàn thành bình luận của mình trước khi cung cấp các nguồn gốc và toàn diện hơn. Điểm +1 của tôi là OP yêu cầu các tiêu chuẩn nhưng hầu hết các câu trả lời đều cung cấp ý kiến.
Fuhrmanator

Câu trả lời này chỉ cung cấp ý kiến , liên kết đến w3schools là không liên quan và không loại bỏ như vậy. Về tiêu chuẩn, hãy xem quy tắc thực hiện (như trong RSS ) hoặc quy tắc tổ chức (như trong OAGi ) - ở một số cấp độ, "tiêu chuẩn" chỉ được áp dụng ở một ứng dụng / cấp kinh doanh cụ thể. Liên kết w3schools chỉ cung cấp ý kiến của riêng nó / phương pháp hay nhất theo nghĩa rất mơ hồ (nó cung cấp một số mẹo và nói rằng "đây là một số cách đã xong").
user2864740

Nghĩa là, chỉ bao gồm một liên kết không tạo ra câu trả lời (hoặc tài nguyên được liên kết) có thẩm quyền.
user2864740

7

Nhiều phương ngữ XML làm trung tâm tài liệu sử dụng chữ Latinh cơ bản và dấu gạch ngang. Tôi có xu hướng đi với điều đó.

Các trình tạo mã ánh xạ trực tiếp XML tới các định danh ngôn ngữ lập trình rất dễ hỏng và (ngoại trừ việc tuần tự hóa đối tượng ngây thơ, chẳng hạn như XAML) nên tránh ở các định dạng tài liệu di động; để sử dụng lại tốt nhất và kéo dài tuổi thọ thông tin, XML nên cố gắng khớp với miền, không phải việc triển khai.


3

rss có lẽ là một trong những lược đồ xml được tiêu thụ nhiều nhất trên thế giới và nó là camelCased.

Thông số kỹ thuật ở đây: http://cyber.law.harvard.edu/rss/rss.html

Đã cho rằng nó không có thuộc tính nút nào trong lược đồ, nhưng tất cả các tên phần tử nút đều là camelCased. Ví dụ:

lastBuildDate quản lýEditor pubDate


2

Tôi thường căn chỉnh quy ước đặt tên XML với cùng quy ước đặt tên trong các phần khác của mã. Lý do là khi tôi tải XML vào Đối tượng, các thuộc tính và tên phần tử của nó có thể được coi là quy ước đặt tên giống nhau hiện được sử dụng trong dự án.

Ví dụ: nếu javascript của bạn sử dụng camelCase thì XML của bạn cũng sử dụng camelCase.


1
Trong khi hữu ích cho công việc intraproject, điều này một cách nhanh chóng phá vỡ xuống khi XML được sử dụng như một ngôn ngữ-agnostic định dạng trao đổi ..
user2864740

Vì vậy, các thành phần trong dự án của bạn là nhất quán, nhưng làm thế nào để bạn thiết kế tiêu chuẩn ban đầu mà dự án tuân theo?
Gqqnbig

2

Microsoft chấp nhận hai quy ước:

  1. Đối với cấu hình , Microsoft sử dụng camelCase . Xem tệp cấu hình Visual Studio. Đối với VS2013, nó được lưu trữ trong:

    C: \ Program Files (x86) \ Microsoft Visual Studio 12.0 \ Common7 \ IDE \ devenv.exe.config

Thí dụ:

<startup useLegacyV2RuntimeActivationPolicy="true">
  <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
  1. Microsoft cũng sử dụng UpperCase cho XAML của họ. Tôi đoán nó là để phân biệt với HTML (sử dụng chữ thường).

Thí dụ:

<MenuItem Header="Open..." Command="ApplicationCommands.Open">
    <MenuItem.Icon>
        <Image Source="/Images/folder-horizontal-open.png" />
    </MenuItem.Icon>
</MenuItem>

1

Không có khuyến nghị rõ ràng. Dựa trên đề xuất khác từ W3C, đề xuất cho XHTML , tôi đã chọn viết thường:

4.2. Tên phần tử và thuộc tính phải ở dạng chữ thường

Tài liệu XHTML phải sử dụng chữ thường cho tất cả các tên phần tử và thuộc tính HTML. Sự khác biệt này là cần thiết vì XML phân biệt chữ hoa chữ thường, ví dụ: <li> và <LI> là các thẻ khác nhau.


0

Quy tắc đặt tên XML

Các phần tử XML phải tuân theo các quy tắc đặt tên sau:

  • Tên có thể chứa các chữ cái, số và các ký tự khác
  • Tên không được bắt đầu bằng số hoặc ký tự dấu câu
  • Tên không được bắt đầu bằng các chữ cái xml (hoặc XML hoặc Xml, v.v.)
  • Tên không được chứa khoảng trắng Tên nào cũng được, không được đặt trước từ nào.

Nguồn: W3 School


Mô tả mơ hồ về những loại tên có thể cung cấp ít hướng dẫn về những tên có thể nên được sử dụng.
Samuel Edwin Ward

Mặc dù họ xác định đường cơ sở của những gì có thể - phải không?
petermeissner

10
Chắc chắn rồi, nhưng điều này giống như nếu ai đó hỏi "tôi nên đặt tên gì cho con tôi để chúng không bị bắt ở trường" và bạn trả lời "à, đây là danh sách những âm thanh mà con người có thể tạo ra."
Samuel Edwin Ward

Vâng, nhưng htat thực sự không phải là câu hỏi, phải không? Bởi vì các câu hỏi là: "Có quy ước đặt tên tiêu chuẩn cho các phần tử XML không?" và "Có tiêu chuẩn nào, trên thực tế hay cách khác, cho các tài liệu XML không?" vì vậy đây là một câu trả lời phải không? Một câu trả lời cho câu hỏi và không chỉ một luồng giải thích chung cho câu hỏi.
petermeissner

3
Đó chỉ là câu trả lời nếu bạn bỏ qua phần còn lại của câu hỏi sau hai câu đó. Bạn đã không cố gắng trả lời 'cái nào là "tốt nhất"' hoặc "cái nào tốt hơn".
Samuel Edwin Ward,

0

Tôi đã tìm kiếm rất nhiều để có một cách tiếp cận tốt, cũng đọc chủ đề này và một số chủ đề khác và tôi sẽ bỏ phiếu cho việc sử dụng dấu gạch nối .

Chúng được sử dụng rộng rãi trong ARIA ( https://developer.mozilla.org/de/docs/Web/Barrierefreiheit/ARIA ) có thể được thấy trong nhiều mã nguồn và do đó phổ biến. Như đã chỉ ra ở đây, chúng chắc chắn được phép, điều này cũng được giải thích ở đây: Sử dụng - trong tên phần tử XML

Ngoài ra, một lợi ích phụ: Khi viết HTML kết hợp với CSS, bạn thường có các lớp có tên sử dụng dấu gạch nối làm dấu phân tách theo mặc định. Bây giờ, nếu bạn có các thẻ tùy chỉnh sử dụng các lớp CSS hoặc các thuộc tính tùy chỉnh cho các thẻ sử dụng các lớp CSS, thì những thứ như sau:

<custom-tag class="some-css-class">

nhất quán hơn và đọc - theo ý kiến ​​khiêm tốn của tôi - đẹp hơn nhiều so với:

<customTag class="some-css-class">

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.