Java XML ANY
2023. 1. 17. 13:14ㆍJava
프로젝트 내 dtd_test3.dtd
<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT car (name, company*, (kind|year), price+)>
<!ELEMENT name (#PCDATA) >
<!ELEMENT company (#PCDATA) >
<!ELEMENT kind (#PCDATA|option)* >
<!ELEMENT option (#PCDATA) >
<!ELEMENT year ANY >
<!ELEMENT price (#PCDATA) >
<!ELEMENT y (#PCDATA) ><!ELEMENT m (#PCDATA) >
<!--파이프라인은 | kind 아님 year 를 선택하는 선택연산자
year를 써놓고 자식엘리먼트로 선언을 하지 않았기 때문에 test3.xml에서
오류가 난다.test3.xml로 돌아가서 XML 메뉴에 VALIDATE를 누르면 오
류가 사라지는 걸 볼 수 있습니다
price? 에서 ?물음표 연산자는 price를 사용해도 되고 사용하지 않아도 되는
그러한 형태의 연산자이다.test3.xml로 가서 price태그를 생략해본다.
<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT car (name, company, (kind|year), price?)>
<!ELEMENT name (#PCDATA) >
<!ELEMENT company (#PCDATA) >
<!ELEMENT kind (#PCDATA) >
<!ELEMENT year (#PCDATA) >
<!ELEMENT price (#PCDATA) >
price+ +:한번이상은 꼭 써야한다
<!ELEMENT car (name, company, (kind|year), price+)>
<!ELEMENT name (#PCDATA) >
<!ELEMENT company (#PCDATA) >
<!ELEMENT kind (#PCDATA) >
<!ELEMENT year (#PCDATA) >
<!ELEMENT price (#PCDATA) >
company* 로 바꿔본다. company 엘리먼트를 한 번 이상 사용해도 되고 아예 사용하지
않아도 된다. 생략해도 되겠다. xml 로 간다.
<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT car (name, company*, (kind|year), price+)>
<!ELEMENT name (#PCDATA) >
<!ELEMENT company (#PCDATA) >
<!ELEMENT kind (#PCDATA) >
<!ELEMENT year (#PCDATA) >
<!ELEMENT price (#PCDATA) >
kind option 추가하기 mixed혼합형으로 지정 혼합형할때는 데이타뒤에 * 별표처리하기
xml파일로간다.
문자데이타와옵션이라는 자식엘리먼트를만들었으면 들여쓰기해서 자식엘리먼트를 추가해야한다.
<!ELEMENT kind (#PCDATA|option)* > 요 밑에 들여쓰기해서 추가하기
XML로 돌아간다
<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT car (name, company*, (kind|year), price+)>
<!ELEMENT name (#PCDATA) >
<!ELEMENT company (#PCDATA) >
<!ELEMENT kind (#PCDATA|option)* >
<!ELEMENT option (#PCDATA) >
<!ELEMENT year (#PCDATA) >
<!ELEMENT price (#PCDATA) >
TEST3.XML로가기
-->
프로젝트 내 test3.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE car SYSTEM "dtd_test3.dtd">
<car>
<name>아반떼</name>
<company>현대</company>
<company>현대</company>
<year>
<y>1999</y>
<m>10</m>
</year>
<price>백만원</price>
<price>백십만원</price>
<price>백이십만원</price>
</car>
<!--문서유형써야되죠먼저 다쓰고 dtd_test3.dtd 수정한다다시 여기로 돌아오면
dtd에 kind|year라고 썼지만 여기서는 아무 오류도 표시되지 않는다.그런데
kind와 year 둘다 중복되서 쓸수 없다.
<car>
<name>아반떼</name>
<company>현대</company>
<kind>소형</kind>
<year>99년도</year>
<price>1,000,000</price>
</car>
오류난다.price? 물음표를 적고나서 test3.xml로 와서 price tag를 지운다.
<car>
<name>아반떼</name>
<company>현대</company>
<year>99년도</year>
<price>1,000,000</price>
</car>
dtd에서 price+ 로 바꾸면 오류가 난다. price 가 꼭 한번이상은 있어야 한다.
<car>
<name>아반떼</name>
<company>현대</company>
<year>99년도</year>
<price>백만원</price>
<price>백십만원</price>
<price>백이십만원</price>
</car>
company* 확인해본다. 컴퍼니*를 지워본다.
<name>아반떼</name>
<year>99년도</year>
<price>백만원</price>
<price>백십만원</price>
<price>백이십만원</price>
캄퍼니 여러개 추가해도 된다.
<name>아반떼</name>
<company>현대</company>
<company>현대</company>
<year>99년도</year>
<price>백만원</price>
<price>백십만원</price>
<price>백이십만원</price>
다음에는 kind만 추가
dtd수정
<name>아반떼</name>
<company>현대</company>
<company>현대</company>
<kind>소형</kind>
<price>백만원</price>
<price>백십만원</price>
<price>백이십만원</price>
옵션을 이용해본다.
xml메뉴 validate누름
<car>
<name>아반떼</name>
<company>현대</company>
<company>현대</company>
<kind>
<option>소형 고급</option>
</kind>
<price>백만원</price>
<price>백십만원</price>
<price>백이십만원</price>
</car>
이번에는 KIND를 생략해본다. 둘중하나를 써야되는거니까
<!DOCTYPE car SYSTEM "dtd_test3.dtd">
<car>
<name>아반떼</name>
<company>현대</company>
<company>현대</company>
<year>99년</year>
<price>백만원</price>
<price>백십만원</price>
<price>백이십만원</price>
</car>
이번엔 자식엘리먼트를이용
y와m이 엘리먼트로 선언이 안되있기때문에 dtd에 가서 선언정의
YEAR안에 Y와M은 자식엘리먼트도 사용될수있고 문자데이타도 얼마든지사용가능한DTD
-->
'Java' 카테고리의 다른 글
Java XML 과 text file (1) | 2023.01.17 |
---|---|
Java XML CDATA 출력 (0) | 2023.01.17 |
Java XML global element 선언 (0) | 2023.01.17 |
Java XML - processing 지시자 (0) | 2023.01.17 |
Java XML FIXED (0) | 2023.01.17 |