Java XML ANY

2023. 1. 17. 13:14Java

프로젝트 내 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