มีหลักการตั้งชื่อมาตรฐานสำหรับองค์ประกอบ XML หรือไม่ [ปิด]


100

มีมาตรฐานใด ๆ สำหรับเอกสาร XML หรือไม่? ตัวอย่างเช่นวิธีใดเป็นวิธีที่ "ดีที่สุด" ในการเขียนแท็ก

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

ในทำนองเดียวกันถ้าฉันมีค่าที่แจกแจงสำหรับแอตทริบิวต์ที่ดีกว่า

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

2
ในทางเทคนิคคุณยังสามารถใช้ <my.tag /> อาจไม่ใช่ความคิดที่ดีในบางบริบท ...
ฟีลโฮ


พบ "มาตรฐาน" หลายรายการทางออนไลน์ ..
user2864740

คำตอบ:


48

ฉันสงสัยว่าค่าที่พบบ่อยที่สุดน่าจะเป็น camelCased - เช่น

<myTag someAttribute="someValue"/>

โดยเฉพาะอย่างยิ่งช่องว่างทำให้เกิดข้อผิดพลาดเล็กน้อยหากผสมกับตัวสร้างโค้ด (เช่นเพื่อ [de] ทำให้เป็นอนุกรม xml กับอ็อบเจ็กต์) เนื่องจากมีภาษาไม่มากนักที่อนุญาตให้ enums มีช่องว่าง (ต้องการการแมประหว่างสอง)


36
อืม ... คำตอบที่ดีที่สุด ... ฉันคิดว่ามันเป็นคำตอบที่ดี แต่ก็เป็นเพียงความเห็น มีการอ้างอิงบ้างก็น่าจะดี
Hamish Grubijan

4
ฉันไม่เห็นด้วยฉันไม่คุ้นเคยกับการดู XML กับกรณีอูฐ
Rafa

ฉันรู้ว่านี่เป็นคำตอบเก่า แต่Microsoft XML รุ่นใหม่ส่วนใหญ่ที่ฉันเห็นมีแนวโน้มที่จะไม่เห็นด้วยกับตัวเลือกรูปแบบนี้ แต่แล้ว IIS ก็ชอบ dot.naming ซะงั้น ..
user2246674

4
อย่างที่ทุกคนพูดถึงมันเป็นเรื่องส่วนตัว แต่ฉันทำตามแนวทางของคุณเพราะฉันมักจะกำหนด XML ของฉันโดยใช้ XMLSchema และ XMLSchema ก็ทำตามแนวทางนี้ w3.org/2001/XMLSchema.xsd สำหรับฉันมันไม่มีอะไรเกี่ยวข้องกับภาษาโปรแกรม เราใช้ XML เนื่องจากเป็นมาตรฐานอินเทอร์เฟซที่ทำงานร่วมกันได้ ภาษาโปรแกรมเป็นเพียงรายละเอียดการใช้งานและแต่ละภาษาก็มีแบบแผนของตัวเอง
dan carter

2 เซ็นต์ของฉัน - ฉันเคยเห็น CamelCase และตัวพิมพ์เล็กทั้งหมด ส่วนบน (HTML เก่า) แทบไม่ทั้งหมดและฉันเคยเห็นตัวพิมพ์เล็ก ฉันจำไม่ได้ว่าเคยเห็น camelBack ฉันชอบ CamelCase หรือตัวพิมพ์เล็ก อย่างไรก็ตามแอตทริบิวต์ฉันมักจะเห็นตัวพิมพ์เล็กทั้งหมด
Kit10

30

กฎการตั้งชื่อ XML

องค์ประกอบ XML ต้องเป็นไปตามกฎการตั้งชื่อเหล่านี้:

    - 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

สามารถใช้ชื่อใดก็ได้ไม่มีการสงวนคำใด ๆ (ยกเว้น xml)

แนวทางปฏิบัติในการตั้งชื่อที่ดีที่สุด

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

รูปแบบการตั้งชื่อ

ไม่มีรูปแบบการตั้งชื่อที่กำหนดไว้สำหรับองค์ประกอบ XML แต่นี่คือบางส่วนที่ใช้กันทั่วไป:

    - 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

อ้างอิง http://www.w3schools.com/xml/xml_elements.asp


13

สำหรับฉันมันก็เหมือนกับการพูดคุยเกี่ยวกับรูปแบบรหัสสำหรับภาษาโปรแกรม: บางคนจะเถียงเรื่องสไตล์คนอื่นจะปกป้องทางเลือก ฉันเห็นเป็นเอกฉันท์เพียงข้อเดียวคือ "เลือกสไตล์เดียวและสอดคล้องกัน"!

ฉันเพิ่งทราบว่าภาษา XML ส่วนใหญ่ใช้ชื่อตัวพิมพ์เล็ก (SVG, Ant, XHTML ... )

ฉันไม่ได้รับกฎ "ไม่มีช่องว่างในค่าแอตทริบิวต์" อย่างไรก็ตามมันส่งไปยังการอภิปราย "สิ่งที่ต้องใส่ในคุณลักษณะและสิ่งที่จะใส่เป็นข้อความ?"
อาจไม่ใช่ตัวอย่างที่ดีที่สุด แต่มีรูปแบบ XML ที่รู้จักกันดีโดยใช้ช่องว่างในแอตทริบิวต์:

  • XHTML โดยเฉพาะแอตทริบิวต์คลาส (คุณสามารถใส่คลาสได้ตั้งแต่สองคลาสขึ้นไป) และแน่นอนคุณสมบัติ alt และ title
  • SVG ด้วยตัวอย่างเช่นแอตทริบิวต์ d ของแท็กเส้นทาง
  • ทั้งที่มีสไตล์แอตทริบิวต์ ...

ฉันไม่เข้าใจข้อโต้แย้งเกี่ยวกับการปฏิบัติอย่างถ่องแท้ (ดูเหมือนจะใช้ได้กับการใช้งานบางอย่างเท่านั้น) แต่อย่างน้อยก็ถูกกฎหมายและค่อนข้างใช้กันอย่างแพร่หลาย เห็นได้ชัดว่ามีข้อเสีย

อ้อและคุณไม่จำเป็นต้องมีช่องว่างก่อนเครื่องหมายทับปิดอัตโนมัติ :-)


อาร์กิวเมนต์เทียบกับช่องว่างคือและนี่เป็นเพียงเพราะถูกถามโดยเฉพาะในคำถามหากมีการแจกแจงค่าเพื่อรองรับการแยกวิเคราะห์ภาษาไม่มากนักที่สนับสนุนการแจงนับด้วยช่องว่าง แต่พวกเราหลายคนที่ใช้ XML ใน C / C ++, C # หรือ Java (ภาษาที่ฉันใช้ แต่ไม่ จำกัด เพียง) มักจะแมปค่าแอตทริบิวต์กับการแจงนับ จากนั้นเราสามารถแยกวิเคราะห์ตัวอักษรไปยังแผนที่ / พจนานุกรม (หรือง่ายกว่าในกรณีของ Java และ C #) ท้ายที่สุดฉันยอมรับว่าดูเหมือนจะเป็นเรื่องของความร้อนแรงมากกว่ามาตรฐาน ฉันแค่ทำตามปรัชญา "เมื่ออยู่ในโรม"
Kit10

12

ฉันชอบ TitleCase สำหรับชื่อองค์ประกอบและ camelCase สำหรับแอตทริบิวต์ ไม่มีช่องว่างสำหรับอย่างใดอย่างหนึ่ง

<AnElement anAttribute="Some Value"/>

เช่นกันผมค้นหาอย่างรวดเร็วสำหรับการปฏิบัติที่ดีที่สุดในรูปแบบ XML, และมาพร้อมกับการเชื่อมโยงที่น่าสนใจมากกว่านี้: XML schema ที่: ปฏิบัติที่ดีที่สุด


8

ฉันมักจะชอบแท็กตัวพิมพ์เล็กหรืออักษรอูฐและเนื่องจากโดยทั่วไปแล้วแอตทริบิวต์ควรสะท้อนถึงค่าข้อมูลไม่ใช่เนื้อหา - ฉันจะยึดติดกับค่าที่สามารถใช้เป็นชื่อตัวแปรในแพลตฟอร์ม / ภาษาใดก็ตามที่สนใจเช่นหลีกเลี่ยงการเว้นวรรคแต่อีกรายการหนึ่ง สองรูปแบบอาจจะโอเค


+1 สำหรับการคิดชื่อตัวแปร / ฟังก์ชัน
Ates Goral

@downvoter: โปรดช่วยฉันด้วยความเอื้อเฟื้อในการอธิบายตัวเอง
annakata

8

เป็นอัตนัย แต่ถ้ามีสองคำในแท็กองค์ประกอบความสามารถในการอ่านสามารถปรับปรุงได้โดยการเพิ่มขีดล่างระหว่างคำ (เช่น<my_tag>) แทนที่จะใช้ไม่มีตัวคั่น อ้างอิง: http://www.w3schools.com/xml/xml_elements.asp ดังนั้นตาม w3schools คำตอบคือ:

<my_tag attribute="some value">

ค่านี้ไม่จำเป็นต้องใช้เครื่องหมายขีดล่างหรือตัวคั่นเนื่องจากคุณได้รับอนุญาตให้เว้นวรรคในค่าแอตทริบิวต์ แต่ไม่ได้อยู่ในชื่อแท็กองค์ประกอบ


2
+1 เนื่องจากคุณอ้างถึงข้อมูลอ้างอิงที่มีส่วน "แนวทางปฏิบัติในการตั้งชื่อที่ดีที่สุด" (ไม่ใช่แค่ความคิดเห็น)
Fuhrmanator

2
@Fuhrmanator "การอ้างอิง" นั้นเป็นความคิดเห็นแม้ว่าจะให้เหตุผลบางประการก็ตาม มันไม่ได้เป็นมาตรฐานโดยวิธีใด ๆ - และ (แม้ว่ามันจะแย่น้อยกว่าเดิมมากก็ตาม) ฉันไม่แนะนำหรือใช้ w3schools เป็น "ข้อมูลอ้างอิง" มีแหล่งข้อมูลดั้งเดิมและครอบคลุมกว่ามาก
user2864740

@ user2864740 เช่น? คุณแสดงความคิดเห็นเสร็จสิ้นก่อนที่จะให้แหล่งข้อมูลที่เป็นต้นฉบับและครอบคลุมมากขึ้น ประเด็น +1 ของฉันคือ OP ขอมาตรฐาน แต่คำตอบส่วนใหญ่ให้ความเห็น
Fuhrmanator

คำตอบนี้เพียง แต่ให้ความคิดเห็นที่เชื่อมโยงไปยัง w3schools เป็นที่ไม่เกี่ยวข้องและไม่ได้ลบดังกล่าว สำหรับมาตรฐานโปรดดูกฎการนำไปใช้งาน (เช่นในRSS ) หรือกฎขององค์กร (เช่นเดียวกับในOAGi ) - ในบางระดับ "มาตรฐาน" จะถูกนำไปใช้กับแอปพลิเคชัน / ระดับธุรกิจที่เฉพาะเจาะจงเท่านั้น ลิงก์ w3schools ให้เฉพาะความคิดเห็น / แนวทางปฏิบัติที่ดีที่สุดของตัวเองในความหมายที่คลุมเครือ (มีเคล็ดลับเล็กน้อยและระบุว่า "นี่คือวิธีการบางอย่าง")
user2864740

นั่นคือการรวมลิงก์ไม่ได้ทำให้คำตอบ (หรือแหล่งข้อมูลที่เชื่อมโยง) มีความน่าเชื่อถือ
user2864740

7

ภาษา XML ที่อยู่ตรงกลางเอกสารจำนวนมากใช้อักษรละตินพื้นฐานและเส้นประ ฉันมักจะไปกับสิ่งนั้น

ตัวสร้างโค้ดซึ่งแมป XML โดยตรงกับตัวระบุภาษาการเขียนโปรแกรมนั้นมีความเปราะบางและ (ยกเว้นการทำให้เป็นอนุกรมของอ็อบเจ็กต์ไร้เดียงสาเช่น XAML) ในรูปแบบเอกสารพกพา เพื่อการใช้ซ้ำและข้อมูลที่ยาวนานที่สุด XML ควรพยายามจับคู่โดเมนไม่ใช่การนำไปใช้งาน


3

rss น่าจะเป็นหนึ่งใน schemas xml ที่บริโภคมากที่สุดในโลกและเป็น camelCased

ข้อมูลจำเพาะอยู่ที่นี่: http://cyber.law.harvard.edu/rss/rss.html

ได้รับมันไม่มีแอตทริบิวต์โหนดในสคีมา แต่ชื่อองค์ประกอบโหนดทั้งหมดเป็น camelCased ตัวอย่างเช่น:

lastBuildDate managementEditor pubDate


2

โดยปกติฉันจะจัดรูปแบบการตั้งชื่อ XML ด้วยหลักการตั้งชื่อเดียวกันในส่วนอื่น ๆ ของโค้ด เหตุผลก็คือเมื่อฉันโหลด XML ลงใน Object แอตทริบิวต์และชื่อองค์ประกอบสามารถอ้างถึงเป็นรูปแบบการตั้งชื่อเดียวกับที่ใช้ในโครงการ

ตัวอย่างเช่นหากจาวาสคริปต์ของคุณใช้ camelCase XML ของคุณก็ใช้ camelCase เช่นกัน


1
ในขณะที่มีประโยชน์สำหรับงาน intraproject แต่สิ่งนี้จะพังลงอย่างรวดเร็วเมื่อใช้ XML เป็นรูปแบบการแลกเปลี่ยนที่ไม่เชื่อเรื่องพระเจ้า ..
user2864740

ดังนั้นส่วนประกอบในโครงการของคุณจึงมีความสอดคล้องกัน แต่คุณจะออกแบบมาตรฐานพื้นฐานที่โครงการสอดคล้องได้อย่างไร?
Gqqnbig

2

Microsoft รวบรวมสองอนุสัญญา:

  1. สำหรับการกำหนดค่า Microsoft ใช้camelCase CamelCaseดูไฟล์กำหนดค่า Visual Studio สำหรับ VS2013 จะถูกเก็บไว้ใน:

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

ตัวอย่าง:

<startup useLegacyV2RuntimeActivationPolicy="true">
  <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
  1. Microsoft ยังใช้UpperCaseสำหรับ XAML ฉันเดาว่ามันคือการแยกความแตกต่างจาก HTML (ซึ่งใช้ตัวพิมพ์เล็ก)

ตัวอย่าง:

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

1

ไม่มีคำแนะนำที่ชัดเจน ตามคำแนะนำอื่น ๆ จาก W3C คำแนะนำสำหรับXHTMLฉันเลือกใช้ตัวพิมพ์เล็ก:

4.2. ชื่อองค์ประกอบและแอตทริบิวต์ต้องเป็นตัวพิมพ์เล็ก

เอกสาร XHTML ต้องใช้ตัวพิมพ์เล็กสำหรับองค์ประกอบ HTML และชื่อแอตทริบิวต์ทั้งหมด ความแตกต่างนี้จำเป็นเนื่องจาก XML คำนึงถึงขนาดตัวพิมพ์เช่น <li> และ <LI> เป็นแท็กที่ต่างกัน


0

กฎการตั้งชื่อ XML

องค์ประกอบ XML ต้องเป็นไปตามกฎการตั้งชื่อเหล่านี้:

  • ชื่อสามารถประกอบด้วยตัวอักษรตัวเลขและอักขระอื่น ๆ
  • ชื่อต้องไม่ขึ้นต้นด้วยตัวเลขหรือเครื่องหมายวรรคตอน
  • ชื่อไม่สามารถขึ้นต้นด้วยตัวอักษร xml (หรือ XML หรือ Xml ฯลฯ )
  • ชื่อต้องไม่มีช่องว่างสามารถใช้ชื่อใดก็ได้ไม่มีการสงวนคำ

ที่มา: โรงเรียนว 3


คำอธิบายที่คลุมเครือว่าชื่อประเภทใดที่เป็นไปได้ให้คำแนะนำเล็กน้อยว่าควรใช้ชื่อใดที่เป็นไปได้
Samuel Edwin Ward

แม้ว่าพวกเขาจะกำหนดพื้นฐานของสิ่งที่เป็นไปได้ - จริงไหม?
petermeissner

10
แน่นอน แต่นี่ก็เหมือนกับว่ามีคนถามว่า "ฉันควรตั้งชื่อลูกว่าอะไรเพื่อไม่ให้ลูกไปโรงเรียน" และคุณตอบว่า "เอาละนี่คือรายการเสียงที่มนุษย์สามารถผลิตได้"
Samuel Edwin Ward

ใช่ แต่จริงๆแล้ว htat ไม่ใช่คำถามใช่มั้ย? เนื่องจากคำถามคือ: "มีหลักการตั้งชื่อมาตรฐานสำหรับองค์ประกอบ XML หรือไม่" และ "มีมาตรฐานใด ๆ สำหรับเอกสาร XML หรือไม่" นี่คือคำตอบใช่ไหม คำถามที่ตอบคำถามไม่ใช่เพียงกระแสการตีความคำถามที่พบบ่อย
petermeissner

3
เป็นเพียงคำตอบหากคุณเพิกเฉยต่อคำถามที่เหลือหลังจากสองประโยคนั้น คุณยังไม่ได้พยายามตอบว่า "ดีที่สุด" หรือ "ข้อไหนดีกว่า"
Samuel Edwin Ward

0

ฉันได้รับการค้นหามากสำหรับวิธีการที่ดียังอ่านกระทู้นี้และอื่น ๆ บางอย่างและฉันจะลงคะแนนให้ใช้ยัติภังค์

ใช้กันอย่างแพร่หลายใน ARIA ( https://developer.mozilla.org/de/docs/Web/Barrierefreiheit/ARIA ) ซึ่งสามารถเห็นได้ในซอร์สโค้ดจำนวนมากดังนั้นจึงเป็นเรื่องธรรมดา ดังที่ได้กล่าวไว้แล้วที่นี่พวกเขาได้รับอนุญาตอย่างแน่นอนซึ่งอธิบายไว้ที่นี่ด้วย: การใช้ - ในชื่อองค์ประกอบ XML

ข้อดีอีกอย่าง: เมื่อเขียน HTML ร่วมกับ CSS คุณมักจะมีคลาสที่ชื่อใช้ยัติภังค์เป็นตัวคั่นตามค่าเริ่มต้นเช่นกัน ตอนนี้หากคุณมีแท็กที่กำหนดเองซึ่งใช้คลาส CSS หรือแอตทริบิวต์ที่กำหนดเองสำหรับแท็กที่ใช้คลาส CSS สิ่งที่ต้องการ:

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

มีความสอดคล้องและอ่านมากขึ้น - ในความเห็นที่ต่ำต้อยของฉัน - ดีกว่า:

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

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.