[xml] 요소 이름에 대한 대소 문자 규칙?

XML의 요소 대 / 소문자에 대한 공식적인 권장 사항이 있습니까?

XHTML이 소문자 요소 이름을 사용한다는 것을 알고 있습니다 (정규적으로 대문자를 사용하지만 대소 문자를 구분하지 않는 HTML과는 반대입니다).

하지만 저는 일반적인 콘텐츠를위한 XML에 대해 이야기하고 있습니다.

소문자 :

<customer>
   <accountnumber>619</accountnumber>
   <name>Shelby Lake</name>
</customer>

낙타 케이스 :

<customer>
   <accountNumber>619</accountNumber>
   <name>Shelby Lake</name>
</customer>

PascalCase :

<Customer>
   <AccountNumber>619</AccountNumber>
   <Name>Shelby Lake</Name>
</Customer>

대문자 :

<CUSTOMER>
   <ACCOUNTNUMBER>619</ACCOUNTNUMBER>
   <NAME>Shelby Lake</NAME>
</CUSTOMER>

참고 : 의견보다는 인용 된 가이드 라인을 찾고 있습니다. 그러나 가장 많은 찬성표를 가진 의견은 지침으로 간주 될 수 있습니다.



답변

W3C에서 시작된 대부분의 XML 표준은 하이픈과 함께 소문자를 사용하는 경향이 있습니다.

W3C 표준이 권장하는 플랫폼 중립 문서의 형식으로 XML을 보는 것과 XML을 플랫폼 특정 개체 그래프의 직렬화로 보는 XAML과 같은 언어 사이에는 철학적 차이가 있습니다.

XML을 플랫폼 중립적 인 문서 형식으로 사용하지 않고 응용 프로그램 별 직렬화로 사용하는 경우에는 신경 쓰지 않고 XML 이름과 플랫폼 별 이름 사이에 1 : 1 대응을하는 것이 좋습니다. 그러나 거의 모든 다른 개체 그래프 형식이 이러한 목적을 위해 XML보다 낫습니다.

그렇다면 XHTML, XSLT, SVG, XProc, RelaxNG 및 나머지에 적합 할 수 있습니다.


답변

그게 중요하지는 않지만 항상 PascalCase for Elements와 camelCase for 속성에 부분적이었습니다.

<Root>
  <ParentElement attributeId="1">
    <ChildElement attributeName="foo" />
  </ParentElement>
</Root>


답변

공식적인 권장 사항은 없습니다.

XML은 문서보관 하고 서로 다른 시스템간에 정보를 교환 하는 두 가지 목적 으로 설계되었으므로 이를 사용하는 응용 프로그램 에 맞출 수 있도록 설계되었습니다 .

따라서 .Net XML은 ProperCasing (XAML을 확인)을 사용하는 반면 다른 XML은 camelCasing, python_conventions, dot.naming, 심지어 COBOL-CONVENTIONS를 사용합니다. W3C는 소문자-대시-아주-비트 (예 : XSLT) 또는 그냥 소문자 단어가 함께 스매싱 된 (예 : MathML)처럼 보입니다.

나는 모두 소문자와 밑줄을 좋아하지 않습니다. 그 이유는 [Shift] 키의 사용이 적다는 것을 의미하고 제 손가락이 약간 게으 르기 때문입니다. 🙂


답변

Metro Smurf의 답변에 추가하십시오.

국가 정보 교환 모델 (NIEM : http://en.wikipedia.org/wiki/National_Information_Exchange_Model )은 다음을 사용한다고 말합니다.

  • 요소에 대한 Upper CamelCase (PascalCase).
  • (아래) 속성을위한 camelCase.

NIEM은 일부 표준을 준수하려는 경우 좋은 옵션을 제공합니다.


답변

위의 내 댓글 을 확장하려면 ‘하이픈이있는 소문자’를 사용하면 XSLT에 몇 가지 문제가 있습니다. 특히 ‘year-from-age’라는 노드를 ‘year-age’공식과 혼동하기 쉽습니다 (예 : 연도에서 나이 빼기).

@KarlKieninger가 지적했듯이 이것은 XSLT 파서가 아닌 인간 수준에서만 문제가됩니다. 그러나 이것은 종종 오류를 생성하지 않기 때문에 ‘하이픈이있는 소문자’를 표준으로 사용하면 문제가 발생합니다.

몇 가지 적절한 예 :

<a>1</a><b>1</b>
<xsl:value-of select="a+b"/>
outputs 2, as expected

<a>1</a><b>1</b>
<xsl:value-of select="a-b"/>
DOES NOT ERROR, BUT OUTPUTS NOTHING AT ALL

위의 코드에서 빼기 연산자 앞에 공백을 하나 이상 넣어야하지만 더하기 연산자에 대한 요구 사항은 없습니다.

<a-b>1</a-b><c>1</c>
<xsl:value-of select="a-b -c"/>
outputs 0, as expected

그러나 위의 내용을 읽는 것이 얼마나 혼란 스러운지 주목하십시오!

<a>1</a><a-b>3</a-b><b>2</b>
<xsl:value-of select="a-b"/>
outputs 3

<a>1</a><a-b>3</a-b><b>2</b>
<xsl:value-of select="a -b"/>
outputs -1

단일 공백이 있으면 위의 출력이 변경되지만 두 변형 모두 오류가 아닙니다.


답변

여러 표준에서 사용되는 몇 가지 예제 규칙 은 UN / CEFACT XML 명명 및 설계 규칙 기술 사양 버전 3.0 페이지 23을 참조하십시오.

세부 사항 (2009 년 12 월 17 일자 버전 3.0의 23 페이지에서) :

  • LowerCamelCase (LCC)는 속성 이름 지정에 사용되어야합니다.
  • UCC (UpperCamelCase)는 요소 및 유형의 이름을 지정하는 데 사용해야합니다 (MUST).
  • 요소, 속성 및 유형 이름은 개념 자체가 복수가 아닌 한 단수 형식이어야합니다.

( 기타 링크, 스웨덴 사이트 )


답변

Google의 스타일 가이드 는 속성 이름뿐만 아니라 모든 요소 이름에 대해 camelCase를 권장합니다 (요구 사항 일 수도 있음).