Java XML - xsd attributeFormDefault

2023. 1. 18. 11:36Java

프로젝트 내 ns01.xsd

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" 
    targetNamespace="http://www.aaa.co.kr/xml"
    elementFormDefault="qualified"
    attributeFormDefault="unqualified"
    xmlns:my="http://www.aaa.co.kr/xml"
    >
    <!-- 현재 작성중인 element수신,발신,제목,내용 등의 엘리먼트를
    http://www.aaa.co.kr/xml 네임스페이스에 포함을 시킬건지 안시킬건지를 결정하는 방법. 퀄리파이드는 이 엘리먼트들을
    포함,적용시키겠다는 내용이고, 언퀄리파이드로하겠다면 요 작성한 엘리먼트들을 네임스페이스안에 포함시키지 않겠다고한다. 일반적으로
    포함시키는 편이다. attributeFormDefault의 경우에는 사용을 할때 요 속성을 지정할 때도 네임스페이스안에 포함시켜서 사용할건지
    아니면 포함제외하고 사용할건지 결정하는 속성이며, 퀄리파이드라고 지정하면 네임스페이스에 설정된 접두사, 그 위에
    있는 xmlns:xs에 있는 주소는 기본적 필수적으로 사용되는 네임스페이스이다. 그래서 여기있는 xs라는 접두사를 항상 사용해왔다. xs:
    sequence나 xs:complexType 같은 이런 엘리먼트가 xs라는 www.w3.org/2001/XMLSchema에 포함되어있는 거라는 거죠. xs 라는
    접두사때문에 그래서 xs 접두사를 붙여주죠. targetNamespace:my="http://www.aaa.co.kr/xml"
    targetNamespace:my my를 넣으면 http://www.aaa.co.kr/xml 요 네임스페이스 대신에 my 라는 접두사를 사용하겠다는 거죠 
    수신발신제목내용등은 네임스페이스안에 속하도록 하겠다는 거니 접두사 마이를 항상 붙이게 된다. elementFormDefault를 언퀄리
    파이드하면 해당 접두사를 사용하지 않고 xml을 만들겠다 는 의미다 접두사를 여러분이 지정하지 않으면 xml문서에서 자동으로 
    만들어 준다. 
    디자인 탭, 스키마 오른쪽 버튼, generate sample xml files
    file name prefix로 ns01_1을 준다 인스턴스 만들기 
    xmlns:my="http://www.aaa.co.kr/xml" 이것을 추가한 후 
    새롭게 xml 인스턴스 만들기 -->
    <xs:element name="쪽지">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="수신"/>
                <xs:element name="발신"/>
                <xs:element name="제목"/>
                <xs:element name="내용"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>    
</xs:schema>
<!-- 이 스키마를 기본으로해서 xml문서를 하나 만들죠
Design 탭 schema 오른쪽버튼 generate sample xml files, file name
prefix에 ns01로 인스턴스 파일 생성
-->

프로젝트 내 ns01_11.xml

<?xml version="1.0" encoding="UTF-8"?>
<xml1:쪽지 xmlns:xml1="http://www.aaa.co.kr/xml"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://www.aaa.co.kr/xml file:/D:/javaddazua/test2/ns01.xsd">
    <xml1:수신>
    </xml1:수신>
    <xml1:발신>
    </xml1:발신>
    <xml1:제목>
    </xml1:제목>
    <xml1:내용>
    </xml1:내용>
</xml1:쪽지>

Validation successful 이라고 뜬다.

==========================

프로젝트 내 ns01_21.xml

<?xml version="1.0" encoding="UTF-8"?>
<my:쪽지 xmlns:my="http://www.aaa.co.kr/xml"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://www.aaa.co.kr/xml file:/D:/javaddazua/test2/ns01.xsd">
    <my:수신>
    </my:수신>
    <my:발신>
    </my:발신>
    <my:제목>
    </my:제목>
    <my:내용>
    </my:내용>
</my:쪽지>

ns01_21.xml 도 Validate 하면 마찬가지로 Validation successful 이라고 뜬다.

'Java' 카테고리의 다른 글

Java XML - xsd에서 다형성  (0) 2023.01.18
Java XML - xsd targetNamespace  (0) 2023.01.18
Java XML - xsd에서 notation element  (0) 2023.01.18
Java XML - 유일성 논리적 오류  (0) 2023.01.18
Java XML - xsd schema 문서 unique element  (0) 2023.01.18