XML 파일 정의 제약 조건

5565 단어
오늘 안 드 로 이 드 프로젝트 를 할 때 XML 해석 을 사 용 했 습 니 다. 서버 에서 JSON 이 아니 라 XML 로 되 돌 아 왔 습 니 다. 이 럴 때 XML 을 해석 해 야 합 니 다. 물론 XML 을 해석 할 때 XML 파일 의 정의 구조 가 필요 합 니 다. 모든 파일 의 정 의 는 하나의 규범 과 제약 을 따라 야 합 니 다. 그러면 XML 도 예외 가 아 닙 니 다.
XML 의 제약 모델 은 두 가지 가 있 는데 하 나 는 DTD 이 고 다른 하 나 는 Schema 입 니 다. 먼저 DTD 를 말씀 드 리 겠 습 니 다.
DTD (Document Type Definition) 는 모두 문서 형식 정의 라 고 합 니 다. 다음은 dtd 문서 의 정 의 를 직접 보 겠 습 니 다.
<!ENTITY    "      ">

<!ENTITY  %    "CDATA">

<!ELEMENT    ( +)>
<!ELEMENT   (  ,  ,  )>
<!ELEMENT    (#PCDATA)>
<!ELEMENT    (#PCDATA)>
<!ELEMENT    (#PCDATA)>

<!ATTLIST   
   %  ; #IMPLIED
   CDATA #IMPLIED
     CDATA #REQUIRED
     CDATA #FIXED "    "
     CDATA "  "
>

<!ATTLIST         (  |  |  ) "  ">

<!ATTLIST       ID #REQUIRED>
이 demo. dtd 에 따라 작 성 된 demo. xml 내용:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE    SYSTEM "book.dtd">
<  >
    < >
    	<       ="  ">Java    </  >
        <       ="  "     ="    "     ="&  ;">   </  >
        <     ="id">30.0</  >
    </ >
</  >
다음은 demo. dtd 파일 의 내용 을 살 펴 보 겠 습 니 다.
<!ELEMENT    ( +)>
'책장' 을 정의 하 는 탭 을 표시 합 니 다. 이 탭 아래 에 한 권 또는 여러 권 의 '책' 탭 을 놓 습 니 다. (빈 칸 주의)
구체 적 인 규칙:
요소 내용 에서 도 +, *,?등 기 호 는 요소 가 나타 난 횟수 를 나타 낸다. +: 1 회 또는 여러 번 (책 +)?:0 번 또는 한 번 (책?) *: 0 번 또는 여러 번 (책 *)
<!ELEMENT   (  ,  ,  )>

'책' 탭 을 정의 하 는 것 을 의미 합 니 다. 이 탭 아래 에 '책 이름', '작가', '가격' 탭 을 정의 합 니 다. 이 세 개의 탭 은 반드시 나타 나 야 하고 이 순서에 따라 정의 해 야 합 니 다. (빈 칸 주의)
구체 적 인 규칙:
요소 내용 에 서 는 다음 과 같은 방식 으로 내용 의 구성 관 계 를 설명 할 수 있 습 니 다. 1. 쉼표 로 구분 하여 내용 의 출현 순 서 는 성명 시 와 일치 해 야 합 니 다. 2. | 로 구분 하여 하 나 를 선택 하면 여러 개 에 한 개 만 나타 날 수 있 음 을 표시 합 니 다
<!ELEMENT    (#PCDATA)>
탭 '책 이름' 을 정의 합 니 다. 이 탭 체 는 텍스트 내용 입 니 다. 구체 적 으로 demo. xml 에 대응 하여 용법 을 볼 수 있 습 니 다.
<!ATTLIST   
   %  ; #IMPLIED
   CDATA #IMPLIED
     CDATA #REQUIRED
     CDATA #FIXED "    "
     CDATA "  "
>
라벨 '저자' 에서 이름, 나이, 연락처, 사이트 서비스, 개인 취미 속성 을 정의 했다.
구체 적 인 규칙:
\ # REQUIRED: 이 속성 을 설정 해 야 합 니 다 \ # IMPLIED: 설정 할 수도 있 고 설정 하지 않 을 수도 있 습 니 다  #FIXED: 이 속성의 값 이 하나의 값 으로 고정 되 어 있 음 을 설명 합 니 다. XML 파일 에 서 는 이 속성 에 다른 값 을 설정 할 수 없습니다. 단, 이 속성 에 이 값 을 제공 해 야 합 니 다.  기본 값 을 직접 사용 합 니 다: XML 에서 이 값 을 설정 할 수도 있 고 설정 하지 않 을 수도 있 습 니 다. 설정 하지 않 으 면 기본 값 을 사용 합 니 다. 
<!ATTLIST         (  |  |  ) "  ">
라벨 '책 이름' 에 '책 유형' 을 정의 한 것 을 나타 낸다. 
규칙:
속성의 종 류 는 한 그룹의 값 을 추출 하 는 목록 일 수 있 습 니 다. XML 파일 에 설 정 된 속성 값 은 이 목록 의 한 값 (매 거 진) 일 수 있 습 니 다.
<!ENTITY    "      ">

<!ENTITY  %    "CDATA">
정의 실체:
첫 번 째 방식 으로 정 의 된 실 체 는 실 체 를 참조 하고 정 의 된 내용 은 xml 파일 에 사용 할 수 있 습 니 다. 예 를 들 어:
<       ="  "     ="    "     ="&  ;">   </  >
사용 & 기호 참조 및 분점 으로 종료
두 번 째 방식 으로 정 의 된 실 체 는 매개 변수 실체 로 dtd 파일 자체 에 사 용 됩 니 다. xml 파일 에서 예 를 들 어:
   %  ; #IMPLIED

마지막 으로 xml 에서 dtd 파일 을 참조 해 야 합 니 다.
<!DOCTYPE    SYSTEM "book.dtd">

이상 에서 말 한 내용 은 dtd 제약 문 서 를 어떻게 작성 하 는 지, 그리고 dtd 제약 문 서 를 통 해 해당 하 는 xml 파일 을 작성 하 는 것 입 니 다. 사실 struts 는 dtd 로 제약 합 니 다. struts 압축 패키지 에서 볼 수 있 습 니 다.
다음은 Schema 제약 사항 을 말씀 드 리 겠 습 니 다.
먼저 Schema 에 대해 알 아 보 겠 습 니 다.
XML Schema 는 XML 문서 의 구조 와 내용 을 정의 하고 설명 하 는 모드 언어 로 DTD 의 한 계 를 극복 하기 위해 XML Schema 파일 자체 가 XML 파일 이지 만 확장 자 는 보통 xsd 입 니 다. XML Schema 문 서 는 보통 패턴 문서 (제약 문서) 라 고 부 릅 니 다.이 문서 에 따라 작 성 된 xml 파일 을 인 스 턴 스 문서 라 고 합 니 다. XML 파일 과 마찬가지 로 XML Schema 문서 에 도 하나의 노드 가 있어 야 하지만 이 노드 의 이름 은 Schema 입 니 다. XML Schema 제약 문 서 를 작성 한 후 이 파일 에 설 명 된 요 소 를 URI 주소 에 연결 해 야 합 니 다. XML Schema 기술 에 전문 용어 가 있 습 니 다.이 과정 을 설명 합 니 다. 즉, XML Schema 문서 에서 설명 한 요 소 를 이름 공간 에 연결 하면 나중에 XML 파일 은 이 URI (즉 이름 공간) 를 통 해 엔진 을 분석 할 수 있 습 니 다. xml 문서 에서 작 성 된 요소 가 어디에서 왔 는 지, 누가 제약 하 는 지 알려 줄 수 있 습 니 다.
DTD 와 Schema 의 차 이 를 살 펴 보 자. XML Schema 는 XML 문법 구조 에 부합된다.  DOM, SAX 등 XML API 는 XML Schema 문서 의 내용 을 쉽게 해석 할 수 있다.  XML Schema 는 이름 공간 을 잘 지원 합 니 다.  XML Schema 는 XML DTD 보다 더 많은 데이터 형식 을 지원 하고 사용자 가 새로운 데이터 형식 을 사용자 정의 할 수 있 도록 지원 합 니 다.  XML Schema 는 제약 조건 을 정의 하 는 능력 이 매우 강하 여 XML 인 스 턴 스 문서 에 대해 세밀 한 의미 제한 을 할 수 있 습 니 다. XML Schema 는 DTD 처럼 실 체 를 정의 할 수 없습니다. DTD 보다 더 복잡 하지만 Xml Schema 는 현재 w3c 조직의 표준 으로 DTD 를 점차 대체 하고 있 습 니 다. 
이 내용 의 설명 은 여기 서 설명 하지 않 겠 습 니 다. 내용 이 너무 많 고 이미 만들어 진 것 이 있 기 때 문 입 니 다. 바로 w3c 홈 페이지 에서 찾 는 것 입 니 다.
http://www.w3.org/TR/2001/REC-xmlschema-0-20010502/#SimpleTypeFacets
여기 서 분명히 말 했 습 니 다. 그리고 demo 가 있 습 니 다. demo 에 대해 상세 하 게 설명 한 것 은 바로 한 가지 입 니 다. 그 는 영어 로 썼 기 때문에 영 어 를 잘 못 하 는 친구 들 은 너무 아 픕 니 다. 스스로 방법 을 생각해 보 세 요.
Google 이 작성 한 dtd 파일 과 xsd 파일, xml 파일 이 올 바른 지 확인 해 야 합 니 다. IE 브 라 우 저 는 dtd 와 schema 의 제약 을 검증 하지 않 기 때문에 MyEclipse 도 구 를 사용 하여 검 측 해 야 합 니 다.
마지막 으로 Schema 는 매우 강력 합 니 다. DTD 제약 모드 를 대체 하고 있 습 니 다. w3c 에 의 해 표준 으로 정의 되 었 습 니 다. 또한 Android 의 xml 파일 이 모두 Schema 모드 로 작 성 된 것 을 볼 수 있 습 니 다.

좋은 웹페이지 즐겨찾기