XML 입문 의 흔 한 문제(3)

저자:AngelGavin  출처:CSDN 은 외국 과 특수 문자 가 있 는 문 서 를 어떻게 불 러 옵 니까?문 서 는 다음 과 같은 외국 문 자 를 포함 할 수 있 습 니 다.   foreign characters (úóí?)  예 를 들 어 공의 외국 문 자 는 반드시 앞 에 escape 서열 을 더 해 야 한다.외국 문 자 는 UTF-8 인 코딩 또는 다른 인 코딩 으로 지정 할 수 있 습 니 다.다음 과 같 습 니 다. 외국 문자(공)  이제 XML 을 정확하게 불 러 올 수 있 습 니 다.다른 문 자 는 XML 에 저장 되 어 있 으 며 다른 방식 으로 처리 해 야 합 니 다.다음 XML: This&that 에 다음 과 같은 오류 가 발생 했 습 니 다.빈 칸 은 허용 되 지 않 습 니 다.행 0000001:This&that location  0000012:-----^여기&XML 문법 구조의 일부분 입 니 다.XML 데이터 원본 내부 에 만 놓 여 있다 면&로 해석 할 수 없습니다.'실체'라 는 특수 문자 시퀀스 를 바 꿔 야 합 니 다.This&that 아래 의 문 자 는 해당 하 는 실체 가 필요 합 니 다:   < <  & &  > >  " "  ' ' 따옴표 문 자 는 속성 값 을 표시 하 는 경계선 문자 로 사용 되 기 때문에 속성 값 내부 에서 사용 할 수 없습니다.예 를 들 어 아래 의 내용 은 오 류 를 되 돌려 줍 니 다.이 곳 의 작은 따옴표 는 속성 경계 문자 로 도 사용 되 고 속성 값 자체 에 도 사 용 됩 니 다.이 문 제 를 바로 잡기 위해 속성 경계 부 호 를 쌍 따옴표 로 바 꿀 수 있 습 니 다.또는 작은 따옴표 를 실체&apos 로 바 꿀 수 있 습 니 다.상기 두 가지 방식 은 모두 XML 대상 모델 중의 getAttribute 방법 을 통 해 속성 값 John's Stuff 를 되 돌려 줍 니 다.마찬가지 로 따옴표 에 대해 서 는 실 체 를 사용 할 수 있 습 니 다."CDATA 섹 션 에 텍스트 를 넣 어 요소 내용 의 특수 문 자 를 처리 할 수도 있 습 니 다.다음 내용 은 정확 합 니 다.이 예 에서 XML 대상 모델 은 CDATA 노드 를 xml 노드 의 하위 노드 로 표시 하고 문자열 This&that 를 되 돌려 줍 니 다.  is just"text"content.nodeValue 로.어떻게 Visual Studio 6.0 C++에서 MSXML COM 구성 요 소 를 사용 합 니까?Visual C++6.0 에서 MSXML COM 구성 요 소 를 사용 하 는 가장 간편 한 방법 은\#import 명령:\#import"msxml.dll"namedguids no_namespace#import "msxml.dll" named_guids no_namespace 는 모든 IXML*인터페이스 와 인터페이스 ID 를 정의 하여 응용 프로그램 에서 사용 할 수 있 습 니 다.INETSDK 에서 MSXML 형식 라 이브 러 리 와 헤더 파일(영어),클래스 IIDs 를 포함 하 는 uid.lib 를 가 져 올 수도 있 습 니 다.어떻게 XML 에서 HTML 실 체 를 사용 합 니까?다음 XML 은 HTML 실 체 를 포함 합 니 다:   Copyright ? 2000,Microsoft Inc,All rights reserved.다음 오류 가 발생 했 습 니 다. 정의 되 지 않 은 실체'copy'를 참조 합 니 다.줄:1,위치:23,오류 코드:0xC00CE 002 Copyright?2000,...-------^이것 은 XML 에 다섯 개의 내 장 된 실체 만 있 기 때문이다.내 장 된 실체 에 대한 상세 한 정 보 는 외국 과 특수 문자 가 있 는 문 서 를 어떻게 불 러 오 는 지 참조 하 십시오.HTML 실 체 를 사용 하려 면 DTD 로 정의 해 야 합 니 다.DTD 에 대한 자세 한 정 보 는 W3C XML 제안(영어)을 참조 하 시기 바 랍 니 다.이 DTD 를 사용 하려 면 DOCTYPE 태그 에 직접 포함 시 키 십시오.다음 과 같 습 니 다.   Copyright ? 2000, Microsoft Inc, All rights reserved.  불 러 오 려 면 IXMLdomDocument 인터페이스의 vaidateOnParse 속성 을 닫 아야 합 니 다."Validator 테스트 페이지"에 붙 여 넣 고 DTD 인증 을 닫 은 다음"검증"을 누 르 십시오.문 서 를 불 러 오고 저작권 문 자 는 vaidator 페이지 의 끝 에 있 는 DOM 트 리 에 표 시 됩 니 다.DTD 인증 이 완료 되 었 다 면 매개 변수 실체 인 HTML 실 체 를 기 존의 DTD 에 포함 시 켜 야 합 니 다.다음 과 같 습 니 다.   %HTMLENT;  %HTMLENT; XML 문서 에서 사용 할 수 있 도록 모든 HTML 실 체 를 정의 합 니 다.요소 내용 에서 공백 문 자 를 어떻게 처리 합 니까?XML DOM 은 세 가지 요소 텍스트 내용 에 접근 하 는 방식 이 있 습 니 다.속성 행위 nodeValue 는 원본 XML 소스 에서 지정 한 대로 TEXT,CDATA,COMMENT 와 PI 노드 의 원본 텍스트 내용(공백 문자 포함)을 되 돌려 줍 니 다.ELEMENT 노드 와 DOCUMENT 자체 에 대해 서 는 빈 값 을 되 돌려 줍 니 다.데 이 터 는 nodeValue 와 같은 텍스트 로 지정 한 하위 트 리 의 여러 TEXT 와 CDATA 노드 를 중복 연결 하고 조합 결 과 를 되 돌려 줍 니 다.메모:공백 문 자 는 새 줄,tab,빈 칸 을 포함 합 니 다.nodeValue 속성 은 보통 원본 문서 의 내용 을 되 돌려 줍 니 다.문서 가 현재 xml:space 범위 와 무관 합 니 다.텍스트 속성 은 지정 한 하위 트 리 의 모든 텍스트 를 연결 하고 실 체 를 확장 합 니 다.이것 은 문 서 를 어떻게 불 러 오 는 지,preserveWhiteSpace 스위치 의 현재 상태 와 현재 xml:space 범위 와 관련 이 있 습 니 다.문 서 를 로드 할 때 preserveWhiteSpace=true 를 보십시오.preserveWhiteSpace=truepreserveWhite Space=truepreserveWhite Space=falseserveWhite Space=falseserveWhite Space=falsexml:space=preservexml:space=defaultxml:space=preservexml:space=default 보류 보류 보류 보류 보류 보류 보류 보류 보류 및 preserveWhite Space=false 문 서 를 로드 할 때 preserveWhiteSpace=truepreserveWhiteSpace=truepreserveWhiteSpace=falsepreserveWhiteSpace=falsexml:space=preservexml:space=defaultxml:space=preservexml:space=default 반보 존 반보 존 반보 존 을 보류 하고 이 곳 의 보 류 를 차단 하 는 것 은 원본 XML 문서 와 똑 같은 원본 텍스트 내용 을 표시 합 니 다.차단 은 전도 와 끝 에 있 는 빈 칸 이 삭제 되 었 음 을 의미 합 니 다.반 보 류 는'중요 한 공백 문자'를 보류 하고'중요 하지 않 은 공백 문자'를 규범화 한 것 을 의미한다.중요 한 공백 문 자 는 텍스트 내용 내부 의 공백 문자 입 니 다.중요 하지 않 은 공백 문 자 는 태그 사이 의 공백 문자 입 니 다.다음 을 보십시오.     \t    Jane  \tSmith     이 예제 에서 빨간색 은 무시 할 수 있 는 중요 하지 않 은 공백 문자 이 고 녹색 은 중요 한 공백 문자 이다.텍스트 내용 의 일부분 이기 때문에 무시 할 수 없 는 중요 한 의 미 를 가진다.따라서 이 예 에서 텍스트 속성 은 다음 과 같은 결 과 를 되 돌려 줍 니 다.상태 반환 값 유지"\t    Jane\tSmith    ""Jane\tSmith"를 보류 하고 차단 합 니 다.    Jane Smith    ""Jane Smith"를 반 보류 하고 절단 하 십시오."반 보류"는 중요 하지 않 은 공백 문 자 를 규범화 합 니 다.예 를 들 어 새 줄 과 tab 문 자 는 하나의 빈 칸 으로 퇴화 합 니 다.xml:space 속성 과 preserveWhiteSpace 스위치 를 변경 하면 텍스트 속성 은 해당 하 는 다른 값 을 되 돌려 줍 니 다.CDATA and xml:space="preserve"subtree boundaries 는 다음 의 예 에서 CDATA 노드 나"보류"노드 의 내용 이 연 결 됩 니 다.중요 하지 않 은 공백 문자 규범화 에 참여 하지 않 기 때 문 입 니 다.예 를 들 면:     \t Jane   \t     Smith     ]> 이러한 상황 에서 CDATA 노드 내부 의 공백 문 자 는'중요 하지 않 음'공백 문자 와'통합'되 지 않 고 절단 되 지 않 습 니 다.따라서"반 보류 및 차단"상황 은 다음 과 같은 내용 으로 돌아 갑 니 다."Jane"      Smith     "여기 서 태그 와 중요 하지 않 은 공백 문 자 는 CDATA 노드 의 내용 과 무관 하 게 포 함 됩 니 다.CDATA 대신 아래 내용 을 사용 하면 같은 결 과 를 되 돌려 줍 니 다:Smith     실 체 는 특수 한 실체 로 DTD 의 일부분 으로 로드 되 고 분석 되 며 DOCTYPE 노드 에 표 시 됩 니 다.그것들 은 반드시 xml:space 범위 가 있어 야 하 는 것 은 아니다.예 를 들 면:   Jane   \t  ">  ]>  &Jane; preserveWhite Space=false(DOCTYPE 태그 범위 내)를 가정 하여 실 체 를 분석 할 때 중요 하지 않 은 공백 문 자 를 잃 어 버 립 니 다.실 체 는 공백 문자 노드 가 없 을 것 입 니 다.트 리 는 다음 과 유사 합 니 다: DOCTYPE foo ENTITY:Jane ELEMENT:employee ELEMENT:name TEXT:Jane ELEMENT:title TEXT>:Software Design Engineer ELEMENT:foo ATTRIBUTE:xml:space="preserve"ENTITYREF:Jane 주의 하 세 요.DOCTYPE 내부 ENTITY 노드 에 나타 난 DOM 트 리 에는 어떠한 WHITESPACE 노드 도 포함 되 지 않 습 니 다.이것 은 ENTITYREF 노드 의 하위 노드 도 WHITESPACE 노드 가 없다 는 것 을 의미한다.실체 가 xml:space='preserve'의 범위 내 에서 인용 되 더 라 도 마찬가지다.주어진 문서 에 인 용 된 모든 ENTITY 의 인 스 턴 스 는 보통 같은 트 리 가 있 습 니 다.실체 가 공백 문 자 를 절대적 으로 유지 해 야 한다 면,내부 에 xml:space 속성 을 지정 하거나,문서 preserveWhiteSpace 스위치 를 true 로 설정 해 야 합 니 다.속성 중의 공백 문 자 를 어떻게 처리 합 니까?속성 값 에 접근 할 수 있 는 몇 가지 방법 이 있 습 니 다.IXMLdomAttribute 인 터 페 이 스 는 nodeValue 속성 이 있 으 며 Microsoft 로 확 장 된 nodeValue 와 text 속성 과 같 습 니 다.이 속성 반환:속성 반환 텍스트 attrNode.nodeValue attrNode.value getAttribute("name")는 원본 문서 와 똑 같은 내용(확 장 된 실체)을 되 돌려 줍 니 다.attrNode.nodeTyped Value Null attrNode.text 는 선도 와 끝의 공백 문자 가 절 단 된 것 을 제외 하고 nodeValue 와 같 습 니 다.  'XML 언어'규범 은 XML 응용 프로그램 에서 다음 과 같은 행 위 를 정의 합 니 다.속성 형식 이 되 돌아 오 는 텍스트 CDATA ID,IDREF,IDREFS,ENTITY,ENTITIES,NOTATION,매 거 반 규범화 전 규범 화 는 이 반 규범 화 는 새 줄 과 tab 문 자 를 빈 칸 으로 바 꾸 지만 여러 개의 빈 칸 이 빈 칸 으로 퇴화 되 지 않 습 니 다.

좋은 웹페이지 즐겨찾기