문맥
xmldom은 최신 브라우저에 있는 다음 API를 다른 런타임에 제공하는 javascript ponyfill입니다.
- XML 문자열을 DOM 트리로 변환
new DOMParser().parseFromString(xml, mimeType) => Document
- DOM 트리 생성, 액세스 및 수정
new DOMImplementation().createDocument(...) => Document
- DOM 트리를 다시 XML 문자열로 직렬화
new XMLSerializer().serializeToString(node) => string
출처: xmldom 읽어보기
역사
2020년 6월에 포크된 xmldom 라이브러리에 기여하기 시작한 이후 지금까지 40번의 릴리스가 있었습니다.
매우 흥미롭고 도전적인 프로젝트이며 꽤 오랫동안 그 상태로 유지될 것 같습니다.
GitHub에 따르면 포크된 이후 50명 이상이 기여했습니다.
기여해주신 모든 분들께 다시 한 번 감사드립니다.
여기에는 범위가 지정되지 않은 원래 xmldom 패키지에서 범위가 지정된 @xmldom/xmldom 패키지 버전 0.7.0으로 이동하여 모든 보안 수정 사항을 얻은 모든 사람은 포함되지 않습니다.
lts 태그로 출시된 최신 버전은 0.7.13입니다.
브레이킹 체인지가 적용된 마지막 버전은 거의 3년 전인 2021년 12월 22일에 출시된 0.8.0이었습니다.
최신으로 출시된 최신 버전은 0.8.10 입니다.
0.9.0 (2024-08-29)
그런데 오늘 이야기하고 싶은 것은 2022년 10월 이후 다음 태그로 공개된 것들입니다.
이러한 변화는 잠재적인 미래 변화를 위한 명확한 기반을 제공하기 때문에 정말 기대됩니다.
TLDR: 사양을 더욱 일치시키고 차이점을 최대한 명시적으로 표현합니다.
1. 제어권을 돌려주기 위해 mimeType을 적용
구현을 복잡하게 만드는 한 가지 측면은 XML과 HTML을 구문 분석하는 데 서로 다른 규칙이 있다는 것입니다.
xmldom은 (어느 정도) 처음부터 두 가지 맛을 모두 "지원"했습니다. mimeType을 전혀 전달할 필요도 없었습니다. 적용할 규칙은 현재 구문 분석 중인 XML 문자열/노드의 현재 기본 네임스페이스에 따라 결정되었습니다.
0.9.0으로 종료됩니다. 이제부터 DOMParser.parseFromString(xml, mimeType)의 mimeType은 필수이며 XML 또는 HTML 규칙을 적용할지 결정하기 위해 확인되는 유일한 항목입니다. 바스타.
그리고 해당 정보는 결과 문서(새 유형 속성)에 보존되므로 직렬화할 때 적절한 규칙이 다시 적용됩니다.
이것은 대규모(그리고 잠재적으로 파괴될 수 있는) 변경이었지만, 수많은 관련 버그 수정이 가능/훨씬 더 간단해졌고 API 및 구현의 복잡성도 줄어들었기 때문에 준비가 되어 정말 기쁩니다.
또한 이제 지정된 MIME 유형만 허용하고 다른 경우에는 TypeError가 발생합니다.
엄격함과 오류 처리
네이티브 브라우저 API의 오류 처리에 대해 개인적으로 혼란스러운 점은 항상 문서를 반환하고 문제가 발생한 경우 파서 오류 노드가 본문의 첫 번째 하위 노드가 된다는 것입니다.
오류 처리는 xmldom에서 이런 방식으로 작동한 적이 없지만 기존 오류 처리는 매우 복잡하고 혼란스럽고 잘못 문서화되어 있으므로 0.9.0에서는 이를 단순화하고 이제 구문 분석 중에 발생하는 모든 잠재적 오류에 대해 (훨씬 더) 일관된 동작을 갖습니다.
ParseError ?가 발생합니다. 다음 중 하나의 경우:
- 이전 버전에서는 형식이 올바르지 않은 일부 XML 문자열의 경우 반환된 문서에 documentElement가 없어 나중에 코드에서 TypeError가 발생할 가능성이 높았습니다.
- 이제 형식이 올바르지 않은 여러 XML 문자열이 fatalError로 올바르게 보고되어 항상 추가 처리를 방해합니다.
- 이전에 오류로 보고되지 않았거나 경고로만 보고되었던 여러 가지 항목도 이제 fatalError로 보고됩니다.
경고(특히 HTML을 구문 분석할 때) 또는 데이터 처리를 중단하지 않는 오류로 보고되는 사례가 여전히 남아 있지만, 새로운 오류 처리 기능을 사용하면 해당 코드가 얼마나 엄격한지 쉽게 결정할 수 있습니다. xmldom을 사용해야 합니다.
DOMParser 생성자에 전달할 수 있는 (사양과 호환되지 않는) 옵션을 onError라고 합니다.
다음 서명이 있는 함수를 사용합니다:
function onError(level:ErrorLevel, message:string, context: DOMHandler):void;
- ErrorLevel은 경고, 오류 또는 fatalError입니다.
- xmldom은 이미 가장 일반적인 두 가지 사용 사례에 대한 구현을 제공합니다.
- 모든 오류 수준 문제에 대해서도 ParseError를 발생시키는 onErrorStopParsing
- 모든 오류 수준 문제에 대해서도 ParseError를 발생시키는 onWarningStopParsing
예상치 못한 일이 발생하는 첫 번째 신호가 있을 때 XML 처리를 중지하려면 다음 중 하나를 적용하는 것이 좋습니다.
// prevent parsing of XML that has `error`s new DOMParser({onError: onErrorStopParsing}).parseFromString(...) // prevent parsing of XML that has `warning`s new DOMParser({onError: onWarningStopParsing}).parseFromString(...)
compareDocumentPosition, extended HTML entities , null instead of undefined, ...
Another fork of the original xmldom repository made it's way back into our repo by extending the HTML entities to the complete set (also available in 0.8.x) and porting over the implementation of the compareDocumentPosition API. Thank you, and welcome @zorkow
Along the way several places where xmldom so far returned undefined instead of null, have been fixed to adhere to the spec.
And I discovered that the former author seems to have preferred iterating from the end of a list in so many places, that attributes were processed in the reverse order in multiple places, which is now fixed.
The implementation of the removeChild API changed quite a bit, to comply to the spec and throws a DOMException when it should.
And 3 related bugs were fixed in a way that clearly states what the future direction of xmldom is:
Support for lax HTML parsing rules will only be provided if proper strict XML parsing doesn't suffer from it.
The former (broken) "support" for automatic self closing tags in HTML is gone.
coctype internalSubset
More recently @shunkica invested a huge amount of time end effort to fix tons of issues in the former handling of the internalSubset part of the !DOCTYPE.
It is now preserved as part of the internalSubset property of the doctype of a Document and many wrong doctype declarations are now correctly detected as such and reported as a fatalError.
Also thanks to @kboshold for the latest bug fix in this area.
Along the way we created a new module containing regular expressions for the relevant grammar, and correctness checks are based on those and they are properly covered by tests.
It is not the goal of xmldom to become a validating parser, but this a great step to support those documents that come with more complex DTDs.
And there is even more
Up to now development was done using Node v10, since this is also the lowest version xmldom currently supports. As part of the work on the upcoming version, I decided to switch to v18 for development, since more and more devDependencies also made this a minimum requirement. This will be the new minimum runtime version for the time being starting with this release.
I initiated a public poll / dicussion to ask people which version of Node or other runtimes they need support for.
The next breaking release will most likely drop support for some older Node versions, if there is no feedback indicating something different.
Along the way plenty of APIs have received jsdoc comments with proper types.
Thank you
for taking the time to read through all of this.
Those are quite some changes, and I'm very excited to be able to ship those.
I hope you are as excited as I am :)
If you need more details you can go through the very detailed changelog, or head over to the repository and join or start a discussion or file an issue.
위 내용은 .f `@xmldom/xmldom` 릴리스의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

실제 세계에서 JavaScript의 응용 프로그램에는 서버 측 프로그래밍, 모바일 애플리케이션 개발 및 사물 인터넷 제어가 포함됩니다. 1. 서버 측 프로그래밍은 Node.js를 통해 실현되며 동시 요청 처리에 적합합니다. 2. 모바일 애플리케이션 개발은 재교육을 통해 수행되며 크로스 플랫폼 배포를 지원합니다. 3. Johnny-Five 라이브러리를 통한 IoT 장치 제어에 사용되며 하드웨어 상호 작용에 적합합니다.

일상적인 기술 도구를 사용하여 기능적 다중 테넌트 SaaS 응용 프로그램 (Edtech 앱)을 구축했으며 동일한 작업을 수행 할 수 있습니다. 먼저, 다중 테넌트 SaaS 응용 프로그램은 무엇입니까? 멀티 테넌트 SAAS 응용 프로그램은 노래에서 여러 고객에게 서비스를 제공 할 수 있습니다.

이 기사에서는 Contrim에 의해 확보 된 백엔드와의 프론트 엔드 통합을 보여 주며 Next.js를 사용하여 기능적인 Edtech SaaS 응용 프로그램을 구축합니다. Frontend는 UI 가시성을 제어하기 위해 사용자 권한을 가져오고 API가 역할 기반을 준수하도록합니다.

JavaScript는 현대 웹 개발의 핵심 언어이며 다양성과 유연성에 널리 사용됩니다. 1) 프론트 엔드 개발 : DOM 운영 및 최신 프레임 워크 (예 : React, Vue.js, Angular)를 통해 동적 웹 페이지 및 단일 페이지 응용 프로그램을 구축합니다. 2) 서버 측 개발 : Node.js는 비 차단 I/O 모델을 사용하여 높은 동시성 및 실시간 응용 프로그램을 처리합니다. 3) 모바일 및 데스크탑 애플리케이션 개발 : 크로스 플랫폼 개발은 개발 효율을 향상시키기 위해 반응 및 전자를 통해 실현됩니다.

JavaScript의 최신 트렌드에는 Typescript의 Rise, 현대 프레임 워크 및 라이브러리의 인기 및 WebAssembly의 적용이 포함됩니다. 향후 전망은보다 강력한 유형 시스템, 서버 측 JavaScript 개발, 인공 지능 및 기계 학습의 확장, IoT 및 Edge 컴퓨팅의 잠재력을 포함합니다.

JavaScript는 현대 웹 개발의 초석이며 주요 기능에는 이벤트 중심 프로그래밍, 동적 컨텐츠 생성 및 비동기 프로그래밍이 포함됩니다. 1) 이벤트 중심 프로그래밍을 사용하면 사용자 작업에 따라 웹 페이지가 동적으로 변경 될 수 있습니다. 2) 동적 컨텐츠 생성을 사용하면 조건에 따라 페이지 컨텐츠를 조정할 수 있습니다. 3) 비동기 프로그래밍은 사용자 인터페이스가 차단되지 않도록합니다. JavaScript는 웹 상호 작용, 단일 페이지 응용 프로그램 및 서버 측 개발에 널리 사용되며 사용자 경험 및 크로스 플랫폼 개발의 유연성을 크게 향상시킵니다.

Python은 데이터 과학 및 기계 학습에 더 적합한 반면 JavaScript는 프론트 엔드 및 풀 스택 개발에 더 적합합니다. 1. Python은 간결한 구문 및 풍부한 라이브러리 생태계로 유명하며 데이터 분석 및 웹 개발에 적합합니다. 2. JavaScript는 프론트 엔드 개발의 핵심입니다. Node.js는 서버 측 프로그래밍을 지원하며 풀 스택 개발에 적합합니다.

JavaScript는 이미 최신 브라우저에 내장되어 있기 때문에 설치가 필요하지 않습니다. 시작하려면 텍스트 편집기와 브라우저 만 있으면됩니다. 1) 브라우저 환경에서 태그를 통해 HTML 파일을 포함하여 실행하십시오. 2) Node.js 환경에서 Node.js를 다운로드하고 설치 한 후 명령 줄을 통해 JavaScript 파일을 실행하십시오.


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

드림위버 CS6
시각적 웹 개발 도구

SecList
SecLists는 최고의 보안 테스터의 동반자입니다. 보안 평가 시 자주 사용되는 다양한 유형의 목록을 한 곳에 모아 놓은 것입니다. SecLists는 보안 테스터에게 필요할 수 있는 모든 목록을 편리하게 제공하여 보안 테스트를 더욱 효율적이고 생산적으로 만드는 데 도움이 됩니다. 목록 유형에는 사용자 이름, 비밀번호, URL, 퍼징 페이로드, 민감한 데이터 패턴, 웹 셸 등이 포함됩니다. 테스터는 이 저장소를 새로운 테스트 시스템으로 간단히 가져올 수 있으며 필요한 모든 유형의 목록에 액세스할 수 있습니다.

PhpStorm 맥 버전
최신(2018.2.1) 전문 PHP 통합 개발 도구

ZendStudio 13.5.1 맥
강력한 PHP 통합 개발 환경

SublimeText3 Linux 새 버전
SublimeText3 Linux 최신 버전
