나는 차이점을 인식하지 못했지만 동료가 그것을 뒷받침 할 수는 없지만 있다고 말합니다. 차이점이 있다면 무엇입니까?
답변:
올바른 형식 이란 텍스트 개체가 XML이되기 위한 W3C 요구 사항 을충족 함을 의미합니다.
유효 함은 올바른 형식의 XML이 지정된 스키마에서 제공하는 추가 요구 사항을 충족 함을 의미합니다.
[정의 : 데이터 객체는 이 사양에 정의 된대로 잘 구성된 경우 XML 문서 입니다. 또한 XML 문서는 특정 추가 제약 조건을 충족하는 경우 유효 합니다.]
<a><b></a></b>
<
또는 &
내용보다는 사용된다 <
나 &
.기술적으로 XML의 구성 요소 이름에는 콜론 문자가 허용됩니다. 그러나 콜론 은 네임 스페이스 용도로만 이름에 사용해야합니다.
노트 :
XML 권장 사항 [ XML 이름 ] 의 네임 스페이스는 콜론 문자를 포함하는 이름에 의미를 지정합니다. 따라서 작성자는 네임 스페이스 용도를 제외하고 XML 이름에 콜론을 사용하지 않아야하지만 XML 프로세서는 콜론을 이름 문자로 허용해야합니다.
따라서 다른 용어 인 namespace- well-formed는 올바른 형식에 대한 모든 XML 규칙 과 해당 네임 스페이스 및 네임 스페이스 접두사를 관리하는 XML 1.0 W3C 권장 사항 의 네임 스페이스에 정의되어 있습니다.
구어 적으로 잘 구성된 용어 는 종종 잘 구성된 네임 스페이스 가 더 정확한 경우에 사용됩니다. 그러나 이것은이 답변에 설명 된 올바른 형식과 유효한 XML을 구별하는 것보다 덜 실용적인 결과의 사소한 기술적 방식입니다 .
유효한 XML은 DTD에 대한 유효성 검사에 성공한 XML입니다.
잘 구성된 XML은 모든 태그가 적절한 순서로 닫혀있는 XML이며 선언이있는 경우 파일에 적절한 속성이있는 첫 번째 항목이 있습니다.
즉, 유효성은 의미론을 의미하고 올바른 형식은 구문을 의미합니다.
따라서 잘못된 형식의 XML이있을 수 있습니다.
다른 사람들이 말했듯이 올바른 형식의 XML은 XML 사양을 따르고 유효한 XML은 주어진 스키마를 따릅니다.
또 다른 표현은 올바른 형식의 XML은 어휘 적으로 정확하고 (파싱 할 수 있음) 유효한 XML은 문법적으로 정확합니다 (알려진 어휘 및 문법과 일치시킬 수 있음).
XML 문서는 올바른 형식이 될 때까지 유효하지 않습니다. 모든 XML 문서는 올바른 형식을 위해 동일한 표준 (W3에서 제시 한 RFC)을 따릅니다. 하나의 XML 문서는 일부 스키마에 대해 유효하고 다른 스키마에 대해서는 유효하지 않을 수 있습니다. 스키마 언어에는 여러 가지가 있으며 그 중 대부분은 XML 기반입니다.
Well-Formed XML은 언어의 구문 요구 사항을 충족하는 XML입니다. 닫는 태그가 누락되지 않고 모든 싱글 톤 태그가 <whatever />
대신 사용 <whatever>
하고 올바른 순서로 닫는 태그가 있습니다.
유효한 XML은 DTD를 사용하고 모든 요구 사항을 준수하는 XML입니다. 따라서 속성을 부적절하게 사용하면 DTD를 위반하고 유효하지 않습니다.
모든 유효한 XML은 올바른 형식이지만 올바른 형식의 모든 XML이 유효한 것은 아닙니다.
XML은 표준에 의해 설정된 모든 XML 문서에 대한 요구 사항을 충족하는 경우 잘 구성된 것입니다. 즉, 단일 루트 노드가 있고, 노드가 올바르게 중첩되고, 모든 노드에 닫는 태그가 있습니다 (또는 슬래시의 빈 노드 속기 사용). 닫는 꺾쇠 괄호), 따옴표로 묶인 속성 등. 올바른 형식은 XML 규칙을 준수한다는 의미이므로 제대로 구문 분석 할 수 있습니다.
XML은 DTD 또는 스키마에 대해 유효성을 검사하는 경우 유효합니다. 이것은 케이스마다 분명히 다릅니다. 한 스키마에 대해 유효한 XML은 여전히 올바른 형식이지만 다른 스키마에 대해서는 유효하지 않습니다.
XML의 형식이 올바르지 않으면 제대로 구문 분석 할 수 없습니다. 파서는 단순히 예외를 던지거나 오류를보고합니다. 이것은 일반적이며 XML에 포함 된 내용은 중요하지 않습니다. 파싱 된 후에 만 유효성을 확인할 수 있습니다. 이 도메인 또는 컨텍스트에 따라 다르며 유효성을 검사 할 DTD 또는 스키마가 필요합니다. 간단한 XML 문서의 경우 DTD 또는 스키마가 없을 수 있습니다.이 경우 XML이 유효한지 알 수 없습니다.이 경우 개념이나 유효성이 적용되지 않습니다. 물론 이것은 당신이 그것을 사용할 수 없다는 것을 의미하는 것이 아니라 그것이 유효한지 아닌지를 말할 수 없다는 것을 의미합니다.
XML 사양에서 W3C는 XML 문서를 만드는 동안 따라야하는 특정 규칙을 정의했습니다. 이러한 규칙의 예에는 정확히 하나의 루트 요소 포함, 각 시작 태그에 대한 종료 태그 포함, 속성 값에 작은 따옴표 / 큰 따옴표 사용 등이 포함됩니다. XML 문서가 이러한 모든 규칙을 따르는 경우 올바른 형식의 문서라고하며 XML 구문 분석기를 사용하여 이러한 문서를 구문 분석하고 처리 할 수 있습니다.
DTD (문서 유형 정의) 또는 XML 스키마를 사용하여 특정 XML 문서 클래스의 구조와 내용을 정의 할 수 있습니다. 여기에는 상위-하위 관계 세부 정보, 속성 목록, 데이터 유형 정보, 값 제한 등이 포함됩니다. 올바른 형식 규칙 외에도 XML 문서가 관련 DTD / 스키마에 지정된 규칙을 따르는 경우 다음과 같이 말합니다. 유효한 XML 문서 여야합니다.
모든 유효한 XML 문서는 올바른 형식이지만 그 반대가 항상 사실은 아닙니다. 올바른 형식의 XML 문서가 반드시 유효 할 필요는 없습니다.
앞서 언급 한 DTD 외에도 XML 문서를 설명하고 유효성을 검사하는 다른 두 가지 방법은 XMLSchema 및 RelaxNG입니다 . 둘 다 DTD보다 사용하기 쉽고 더 많은 기능을 지원할 수 있습니다.
에서 촬영 확장 마크 업 언어 (XML) 1.0 (제 5 판) - W3C 권고안 2008 11월 26일 :
[정의 : 데이터 객체는이 사양에 정의 된대로 올바른 형식이면 XML 문서입니다. 또한 XML 문서는 특정 추가 제약 조건을 충족하는 경우 유효합니다.]
텍스트 단락의 단락보다 의사 코드를 선호하는 사람들을 위해 ... :)
IF is_well_formed(<XML_doc>) THEN
# It is well-formed, and can be parsed
IF is_valid(<XML_doc>) THEN
# Well-formed and ALSO valid. Hurray!
# **A valid XML doc, is a well-formed doc!**
ELSE
# Only well-formed, NOT valid
END IF
ELSE
# Not well-formed, or valid!
END IF
FUNCTION is_well_formed
IF <does_not_contain_syntax,_spelling,_punctuation,_grammar_errors,_etc._errors> THEN
RETURN TRUE
ELSE
RETURN FALSE
END IF
END FUNCTION
FUNCTION is_valid
IF <markup_of_the_XML_document_matches_"some"_defined_standard> THEN
# Standards used to validate XML could be a DTDs or XML Schemas, referenced within the XML document
RETURN TRUE
ELSE
RETURN FALSE
END IF
END FUNCTION
이론 기반 : "잘 형성됨"대 유효
DTD는 문서 유형 정의의 약어입니다. XML 파일 패밀리에 대한 내용에 대한 설명입니다. 이것은 XML 1.0 사양의 일부이며 주어진 문서 인스턴스가 구조와 내용을 자세히 설명하는 일련의 규칙을 준수하는지 설명하고 확인할 수 있습니다.
유효성 검사는 DTD (보다 일반적으로 일련의 구성 규칙에 대해)에 대해 문서를 확인하는 프로세스입니다.
유효성 검사 프로세스와 DTD 구축은 XML 수명주기에서 가장 어려운 두 부분입니다. 간단히 DTD는 문서 내에서 찾을 수있는 모든 요소, 문서 트리의 형식적인 모양을 정의합니다 (요소의 허용 된 콘텐츠, 텍스트, 허용 된 하위 목록에 대한 정규식 또는 혼합 콘텐츠를 정의하여) 즉 텍스트와 어린이 모두). DTD는 또한 모든 요소에 대한 유효한 속성과 해당 속성의 유형을 정의합니다.
W3 학교에서 XML DTD를 참조하십시오 .
올바른 구문을 가진 XML 문서를 "Well Formed"라고합니다.
DTD에 대해 유효성이 검증 된 XML 문서는 "올바른 형식"과 "유효"입니다.