XML에서는 순서가 중요합니까?
공통 부모의 요소가 XML에 나타나는 순서는 XML 문서에 의해 캡처된 의미 있는 데이터입니까, 아니면 순서가 의미 있는 것으로 지정되지 않은 것입니까?예를 들어, 두 개의 XML 문서를 예로 들 수 있습니다.
<people>
<person name="sam"/>
<person name="juni"/>
</people>
그리고.
<people>
<person name="juni"/>
<person name="sam"/>
</people>
이 문서들은 동일한 데이터를 나타내는 것으로 간주됩니까, 아니면 순서의 차이를 포착합니까?
요소의 순서는 XML에서 중요하므로 예제에서는 두 문서가 다릅니다.속성 순서는 중요하지 않습니다.
<people>
<person name="kathy" id="1"/>
</people>
이는 다음과 같습니다.
<people>
<person id="1" name="kathy"/>
</people>
동일하지 않습니다 - 순서가 중요한지 여부는 프로그램이나 사용자가 결정합니다.예를 들어, XHTML 문서의 요소 시퀀스는 브라우저에 표시되는 방법을 결정하고, 검색 엔진은 문서의 위치를 사용하여 데이터의 상대적인 중요도를 판단합니다.
그 순서는 잠재적으로 중요하지만, 전송되는 것에 따라 다릅니다.
예를 들어, XHTML에서는 순서가 매우 중요합니다. 만약 형제 단락이 무작위 순서로 있다면 매우 혼란스러울 것입니다!
다른 많은 경우에는 중요하지 않습니다.
XML은 노드의 트리를 나타내는 방법일 뿐입니다.XML 자체는 순서가 중요하다고 말합니다. 예를 들어 API는 순서를 보존해야 합니다. 그러나 순서에 대해 정말로 신경을 쓰든 말든 데이터를 생산/해석하는 것은 무엇이든에 달려 있습니다.
XML 사양은 사실상 "주문하는 쪽의 오류"를 의미합니다. 주문에 신경 쓰지 않으면 무시하기 쉽지만 API가 변경을 결정하면 주문을 재구성하는 것은 골치 아픈 일입니다. (주문을 속성 등에 넣어야 합니다.)
순수하게 XML 유효성 관점에서는 XML을 포맷하기 위한 규칙이 무엇인지를 설명하는 스키마(있는 경우)에 따라 달라집니다.
즉, 질서는 반드시 보존되어야 합니다(http://www.w3.org/TR/xml-infoset/) 의 2.1.1 참조). 그러나 애플리케이션에 "중요한" 것인지 여부는 작성자에게 달려 있습니다.
에서 하지 는 에서 는 하지 xs:all
비록 이것이 포획된 질서의 보존에 영향을 미치는지는 확신할 수 없지만, 컴포지터.저는 오리진/시리얼라이제이션에서의 주문이 XML 프로세서에 의해 유지되기를 여전히 기대하고 있습니다.
그러나 1.0에서는 하위 요소에 대한 제한이 추가되어 하위 요소가 0번 또는 1번 발생해야 합니다. 1에서는 이 하지 않음을 할 수 , 으로 XSD 1.1이이어상이지을다게수할는다수할게n을t지tsoyrxxsntds,dy1gt .xs:all
하지 않은 지이다다이esef은이 되었습니다.xs:sequence
.
제한적인 1 ㎛ ㎛ ㎛ 1.0 ㎛ xs:all
가,자xs:sequence
컴포지터를 사용해야 했습니다.따라서, 질서는 종종 인위적으로 강요되었습니다.
validator 라이브러리의 공급업체들이 1.1을 채택하는 속도는 느립니다.
따라서 API는 새로운 요소로 진화할 때 질서를 고려해야 합니다.나는 1.1과 함께 작동할 수 있는 XML 직렬화 프레임워크를 알지 못하며 당신은 당신의 클라이언트가 1.0을 사용하고 1.0 규칙과 초크로 1.1 수신 메시지를 검증할 것이라고 가정해야 합니다.
루크
이 기사에 따르면, 1.0 버전의 표준은 심지어 파서가 문서에 나타나는 순서대로 형제자매를 보고하도록 요구하지도 않습니다.그런 점에서 두 아이가 모두 그곳에 있기 때문에 그들이 다르다고 생각되지는 않을 것입니다.아마도 이것은 바뀌었을 것이고, 그래서 다른 대답들은 새로운 버전의 XML에 대한 것입니다.
XML 특성 순서는 XML 표준에 관한 한 중요하지 않지만 XML의 텍스트 표현은 속성을 특정 순서로 배치할 필요가 있습니다.XML 문서에 대한 디지털 서명을 생성하는 XML 서명과 같은 경우 이 문제가 발생할 수 있습니다.특성 순서가 다르면 다른 서명이 생성되는데, 이는 명백히 잘못된 것입니다.
이러한 이유(및 다른 이유)로, XML 문서를 재구성하기 위한 규칙을 정의하는 XML 표준화가 현재 존재하며, 이는 동일한 정보 내용을 유지하되 공백, 네임스페이스 선언 및 속성과 같은 것들을 예측 가능한 방식으로 재배열하도록 합니다.
출처: xml.com
표준 XML을 사용하려면 오름차순 사전 형식으로 네임스페이스 선언과 속성을 포함해야 합니다.
XML 1.0 규격에는 이름이 같은 요소의 순서에 대해 같은 상위 요소의 자식에 대해 아무런 설명이 없습니다.그래서 그 문제는 정의되지 않은 것 같습니다.
그러나 대부분의 XML 파서와 API는 텍스트 표현에 주어진 순서를 유지합니다.따라서 요소 순서에 신경 쓰는 응용 프로그램을 구현할 수 있습니다.그리고 당신의 질문에 대한 사실상의 대답은: 네, 순서가 중요합니다.두 예는 다릅니다.
좀 더 자세히 살펴보면 사용 사례가 무엇인지 파악해야 합니다.XML이 다른(아마도 제3자) 애플리케이션과 상호 운용되어야 하는 경우에는 항상 순서가 중요하다고 가정해야 합니다.애플리케이션을 생성하고 사용하는 것을 완전히 제어할 수 있는 경우에는 이 규칙을 완화할 수도 있습니다.
언제나 그렇듯이, 당신이 판단해야 할 겁니다.
차이가 있습니다.다양한 XML API를 사용하여 요소를 순차적으로 처리하거나 인덱스별로 요소를 찾을 수 있습니다.물론 특정 예제에서는 순서가 중요하지 않을 수 있지만 이는 데이터의 의미론에 따라 달라집니다.
주문이 잡혔습니다.
저는 그것들이 동일한 것으로 간주되어야 한다고 생각하지만, 그것을 읽는 사람이 결정하는 것은 정말로 소프트웨어나 사람에게 달려 있습니다.XML은 데이터를 쓰는 방법일 뿐입니다.응용프로그램은 해당 데이터가 어떻게 사용되는지, 따라서 의미의 많은 부분을 결정합니다.
응용프로그램이 모든 사용자 요소를 읽은 다음 이름으로 알파벳순으로 표시하는 경우 XML 문서의 순서는 의미가 없습니다.응용프로그램에서 XML에 표시된 사용자 순서와 동일한 순서로 자리를 지정하는 경우 순서가 매우 중요합니다.
데이터를 사용하는 애플리케이션에 달려 있습니다.순서가 중요하다면 파일을 생성하는 사람들을 위한 사양에 설명해야 합니다.
http://www.ibm.com/developerworks/xml/library/x-eleord.html
아마도 기사의 토론이 당신의 질문에 답하는 데 도움이 될 것입니다.질문 내용이 다소 공개적이기 때문에 우려 사항이 포함되어 있는지 잘 모르겠습니다.
언급URL : https://stackoverflow.com/questions/1131495/in-xml-is-order-important
'programing' 카테고리의 다른 글
데이터 리더의 다중 테이블 (0) | 2023.09.13 |
---|---|
자바에서 객체의 직렬화의 필요성은 무엇입니까? (0) | 2023.09.13 |
아이폰에서 "명령 /bin/sh failed with exit code 1" 문제를 해결하는 방법 (0) | 2023.09.13 |
PHP 7로 mbstring을 초기화할 수 없음 (0) | 2023.09.13 |
CSS 전용 조적 배치 (0) | 2023.09.13 |