XML 유형이 안전한 이유는 무엇입니까? 말합니까? 그리고 XML 자체에서 어떻게

그들은 왜 XML이 형식 안전성을 제공한다고 말합니까? 그리고 XML 자체에서 어떻게 표현됩니까?

유형 안전하지 않은 JSON과 (예를 들어) 다른 점은 무엇입니까?



답변

XML 스키마 정의 (XSD)로 인해 .

XML을 사용하면 스키마를 설명하는 추가 파일이있을 수 있습니다. 예를 들어, 요소 /a/b가 배열이고 1-10 개의 요소를 포함하거나 요소 /a/c가 정수임을 나타냅니다. XSD의 예는 여기에서 찾을 수 있습니다 .

XSD를 통한 지정된 XML 파일의 유효성 검사는 여러 언어에서 지원됩니다 . 예를 들어, .NET 애플리케이션은 신뢰할 수없는 소스에서 XML 파일을 요청 하고 XSD와 일치 하는지 확인할 수 있습니다 . 다음은 차례로 수있는 Microsoft SQL Server 데이터베이스에 저장할 수 있습니다 XSD에 포함되어 다시 확인을 (보장하기 위해 어떤 클라이언트가있는 데이터베이스의 준수에 액세스 할 수 있습니다).

XSD만이 유일한 언어는 아닙니다.

  • 웹 개발을 수행 한 경우 XML 구조를 정의하고 특히 HTML 관련 컨텐츠의 유효성 검증에 사용되는 마크 업 언어 인 DTD ( Document Type Definition) 에 대해 확실히 들었습니다 . 요소 또는 속성에 정수가 포함되도록하는 등 XSD가 수행 할 수있는 모든 작업을 수행 할 수는 없지만 여전히 많은 구조 검사를 수행 할 수 있습니다.

  • RELAX NG 는 다른 언어에 비해 비교적 단순하다는 이점이 있으며 XML보다 더 간단한 형식으로 작성할 수 있습니다.

  • Schematron 은 “XML 트리의 패턴 유무에 대한 주장을 만들기위한 규칙 기반 유효성 검사 언어”( Wikipedia )이며 XPath 주장에 따라 약간 다른 접근 방식을 제시합니다.

JSON에 대한 유사한 이니셔티브 는 그다지 인기가 없습니다 (특히 Microsoft 중심 기업 세계에서는 믿습니다). 그 이유 중 하나는 JSON이 데이터 구조가 다소 기본적인 상황 (예 : 속성이 필요없는 트리로 표현 될 수 있음)에 적합해야하며 유효성을 반드시 검사 할 필요가 없기 때문입니다. 가장 좋은 예는 동적 형식 언어에서 사용되는 REST API입니다.

  • 클라이언트는 구현하기가 매우 쉽고 빠릅니다.
  • API는 변경되지 않아야합니다.
  • 클라이언트는 유효성 검사가 필요한 특정 리프를 쉽게 처리 할 수 ​​있습니다 (예 /something/percentage: 실제 숫자이고 0..100 범위에있는 검사).

답변

XSD 스키마를 사용하면 요소의 데이터 유형을 선언 할 수 있으므로 XML 유형에 안전합니다. XSD 스키마에 대해 유효성이 검증 된 문서는 예상 유형을 준수합니다. 그러나 XML 형식에는 스키마가 필요하지 않으므로 XML만으로 문서를 자동으로 안전하게 입력 할 수 없습니다.

실제로 JSON에 대한 스키마 언어 도 있으므로 유형이 안전한 JSON이 가능합니다. 그러나 거의 사용되지 않으므로 일반적으로 JSON은 형식이 안전하지 않습니다.


답변

컴퓨터 과학에서 유형 안전성 은 프로그래밍 언어가 유형 오류를 방지하거나 예방하는 정도입니다.

유형 안전은 절대적인 속성이 아닙니다. 부울이 아닙니다. 언어 (XML 및 JSON 언어)는 다양한 종류의 오류와 실수를 허용하고 방지합니다. 예를 들어 요소 이름을 잘못 지정할 수 있습니다. 그러나 닫기 태그 및 중괄호와 같은 필수 구문 요소를 건너 뛸 수 없습니다.

일반 XML과 JSON은 형식이 안전하거나 형식이 안전하지 않습니다. 유효한 XML / JSON 문자열에는 특정 구문 및 의미 구조가 있지만 응용 프로그램에서 작동하기에는 충분하지 않습니다. 응용 프로그램은 단지 하나를 수행 구조 그러나 특정의 하나.

XML은 스키마에 대해 지정된 XML 문서의 유효성을 검사하는 유연하고 강력한 방법 인 XML 스키마 정의 (XSD)로 빛납니다. 이것은 위에서 주어진 정의에 따라 많은 유형의 안전성을 제공합니다.