한국어

개발자 도구 · 구문 변환기

XML의 SGML 계보: 속성, 네임스페이스 및 DTD가 있는 이유

· 배경

xml 데이터 형식 보안

XML 속성, 네임스페이스 접두사 및 거부된 DOCTYPE 옆의 혼합 텍스트
원본 ToolAcre 벡터 일러스트레이션

XML의 이상한 점(속성 대 요소, 네임스페이스, DTD, 혼합 콘텐츠)은 데이터가 아닌 문서용으로 단순화된 SGML로 설계되었다는 사실을 알면 이해가 됩니다. 이 게시물에서는 해당 계보를 추적하고 XML을 JSON로 변환할 때의 의미를 추적합니다.

이 데이터 형식에 속성이 있는 이유는 무엇입니까? — XML을(를) JSON(으)로 변환하고 JSON 구별을 충족하는 개발자는 필요하지 않습니다.

JSON에는 한 종류의 객체 속성이 있습니다. XML은 속성, 하위 요소 및 텍스트를 구별합니다. ToolAcre는 이러한 구별을 `@` 속성 ​​및 일반 하위 키와 매핑합니다. 요소에 `id="7"` 및 `<id>` 하위 항목이 모두 있을 때 차이점이 드러납니다. 둘 다 별도의 속성에서 유지됩니다.

이 규칙은 속성이 하나의 보편적인 의미론적 역할을 갖는다고 주장하지 않고 결과 모양을 설명합니다. XML 작성자는 자신의 스키마에 따라 이를 선택합니다. 변환기는 선택한 비즈니스 이유가 아니라 관찰할 수 있는 노드 범주를 유지합니다.

SGML 및 문서 전통 — ISO 8879, 게시용 마크업, 레코드 인코딩 대신 텍스트에 태그를 지정하는 아이디어

혼합 콘텐츠, 순서가 지정된 하위 항목, 속성, 설명 및 처리 지침은 XML 소스에 있는 문서 지향 기능입니다. 구현에서는 처리 방법을 보여 주지만 SGML 연대기, ISO 출판 기록 또는 출판 업계 동기에 대한 증거는 포함하지 않습니다.

따라서 소스 제한 기사는 실행 가능한 동작에서 시작됩니다. 하위 요소 주변의 텍스트는 손실이 있습니다. 주석 및 처리 지침이 삭제됩니다. CDATA는 표시된 상태로 유지됩니다. 이러한 사실은 문서 트리가 JSON 값 트리에 완전히 맞지 않는 이유를 설명합니다.

문서 지향 XML 기능은 SGML 기록 주장 없이 구현 시 표시됩니다.

파서는 올바른 형식의 XML을 검증하고 행과 열을 보고합니다. 결과 값의 선언을 무시하고 5개의 내장 엔터티와 숫자 참조를 디코딩된 텍스트로 유지합니다. 실무 그룹 목표나 10가지 원칙 설계 계정을 설정하지 않습니다.

역사적 주장에는 외부 편집 소스가 필요하지만 이 작업에서는 이를 추가하지 않습니다. 이를 생략하는 것이 종속성 이름에서 규정 준수 또는 출처를 만들어내는 것보다 더 정확합니다.

파서는 XML 구문을 처리합니다. 저장소 증거는 1998 디자인 기록을 설정하지 않습니다.

속성은 `@` 접두사가 붙은 키가 됩니다. 요소의 이름은 그대로 유지됩니다. 구조화된 요소 내부의 텍스트는 `#text`로 이동하는 반면, 텍스트 전용 요소는 문자열로 축소됩니다. 이는 개체 모델이 허용하는 한 구조적 범주를 분리해 유지합니다.

XML을 쓰면 규칙이 반대가 됩니다. 즉, `@id`이 속성이 됩니다. 잘못된 속성이나 요소 이름은 삭제되지 않고 거부됩니다. 이러한 결정은 잘못된 형식의 매핑이 자동으로 변경된 이름으로 그럴듯하게 XML되는 것을 방지합니다.

속성과 요소는 ToolAcre의 @ 규칙에 따라 고유하게 유지됩니다.

네임스페이스 접두사는 네임스페이스 선언을 포함하여 요소 및 속성 이름에서 그대로 유지됩니다. 해결, 제거 또는 다시 작성되지 않습니다. 이는 소스 철자를 유지하지만 네임스페이스 인식 유형 확인은 아닙니다.

fast-xml-parser가 문서를 받기 전에 모든 DOCTYPE이 거부됩니다. 마스크는 주석과 CDATA 내부의 잘못된 일치를 방지합니다. 이는 거부를 우회할 수 있는 옵션 없이 외부 엔터티 요청, 로컬 파일 엔터티 읽기 및 엔터티 확장 공격을 방지합니다.

네임스페이스 접두사는 문자 그대로 유지되며 모든 DOCTYPE은 거부됩니다.

`<p>before<b>bold</b>after</p>`에서는 텍스트 배치가 중요합니다. ToolAcre는 혼합 콘텐츠를 감지하고 `#text` 아래의 조각을 결합하며 하위 항목과 관련된 위치가 손실된다고 경고합니다. JSON 개체 속성은 텍스트 및 요소 노드가 교대로 정렬된 순서를 재현할 수 없습니다.

반복되는 동일한 이름의 하위 항목은 배열이 되지만 이름이 다른 형제 항목은 속성으로 유지됩니다. 정확한 문서 순서가 필요한 코드는 변환된 객체를 완전한 것으로 처리하는 대신 XML 노드 표현을 사용해야 합니다.

여기서 다루지 않는 내용 — XML을 중심으로 성장한 처리 언어인 XSLT, XPath 및 XQuery

XSLT, XPath 및 XQuery는 가져오거나 노출되지 않습니다. 또한 패널은 XSD의 유효성을 검사하고 DTD 선언을 처리하거나 형식화된 도메인 개체를 구성하지 않습니다. 이는 명시적인 보안 및 충실도 경계가 있는 데이터 프로젝션입니다.

쿼리 또는 변환 언어는 일반 값 변환이 할 수 없는 방식으로 노드 순서를 유지하고 탐색할 수 있습니다. 문서 기능이 부수적인 포장이 아닌 작업의 일부인 경우 해당 도구를 선택하십시오.

요약: XML는 데이터 전달 방법을 학습한 문서 형식이며 구문 변환기 패널은 JSON로 변환된 내용을 어떻게 보여줍니다.

XML의 관찰 가능한 데이터 모델에는 JSON에 없는 차이점이 포함되어 있습니다. ToolAcre는 속성, CDATA 및 구조화된 텍스트를 표시하고 네임스페이스 접두사를 유지하며 비데이터 노드를 삭제하고 DOCTYPE을 거부합니다. 각 선택 사항이 표시되고 테스트됩니다.

패널을 사용하여 역사적 권위나 완전한 XML 프로세서가 아닌 프로젝션에서 살아남은 것이 무엇인지 알아보세요. 순서를 정할 때 스키마 또는 네임스페이스 의미 체계가 중요하며 원래 트리를 유지하고 특별히 제작된 XML 도구를 사용하세요.

보안과 충실도는 DOCTYPE 경계에서도 교차합니다. 선언을 거부하면 엔터티 처리가 방지되지만 임의의 레거시 문서에서 이를 삭제하면 엔터티 참조 또는 유효성 검사 가정이 변경될 수 있습니다. 소스를 소유한 경우 필수 엔터티를 명시적인 안전한 텍스트로 바꾸고 결과 문서의 유효성을 검사하세요. 소유자가 아닌 경우 거부를 약화시키거나 부분 변환을 원본 콘텐츠로 제시하는 대신 승인된 XML 작업 흐름을 사용하세요.