블로그 이미지
우디냥
"지금 잠을 자면 꿈을 꾸지만, 지금 공부하면 꿈을 이룰수있다"

calendar

            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30            

Notice

'─☻раցеº②/└ᘐ xml'에 해당되는 글 4

  1. 2007.06.08 XSLT란?
  2. 2007.06.05 스키마(Schema)(1)
  3. 2007.06.04 DTD
  4. 2007.06.04 XML이란?
└ᘐ XSLT란?
      -> 만들어진 xml문서를 표현하는 방식에 대해 규정하는 문서
         
      * 참고
          xml에서 필요한 문서들
           1. 엘레멘트에 대한 정의를 내린 문서
           2. 필요한 정보를 해당 엘레멘트에 맞도록 정리한 문서
           3. xml문서를 표현하는 방식에 대해 규정한 문서

   ▶ xsl문서의 헤더 처리
         xsl 역시 이미 만들어진 xml 문서를 이용해서 처리     
         <?xml version = "1.0" encoding = "euc-kr" ?>
         <xsl:stylesheet version = "1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
              // 문서를 표현하는 방식에 대해서 규종
         </xsl:stylesheet>
 
   ▶ 특정 xml 문서가 자신을 표현할 xsl 문서를 지정하는 방식
          <?xml version="1.0" encoding="euc-kr" ?>
          <?xml-stylesheet type="text/xsl" href="표현 문서파일 이름" ?>
   
    1. 표현방식 지정
         -> xml 문서를 어떤 규칙에 따라 표현할지에 대해서 지정하는 것
             생략하면 자동적으로 html 방식으로 지정
        형식>
             <xsl:output method="표현할 방식" />
        예>
             <xsl:output method="html" />

    2. 탬플레이트 선언하기
          -> 표현한 xsl 문서가 xml 문서의 어디서 부터 표현할지를 지정하는 방식
              * 참고 : 템플레이트 선언을 하게되면 ...
                            지정한 태그에서 부터 하위 태그들이 마치 가상의 트리구조 처럼 만들어진다.
                            가상의 트리구조를 xPath라 부른다.
             형식>
                 <xsl:template match="시작태그">
                 </xsl:template>
                 * 참고 - 시작 태그 부분에 "/"를 사용하면 xml 문서 전체를 xPath로 만들게 된다.

    3. 내용 꺼내기
          -> xPath가 가지고 있는 트리 구조 중에서 특정한 내용을 추출하는 방식
               형식>
                    <xsl:value-of select="추출할 정보의 태그이름' />
               
posted by 우디냥
└ᘐ 스키마(Schema)
     -> DTD로 하기 힘든 섬세한 xml문서의 정의를 위해 만들어진 새로운 xml 형태의 정의 방식
   
      1. 스키마 문서의 전체 형식
          - 이미 만들어진 xml 형태의 문서를 이용해서 새로운 형태를 만들어 나가는 방식
     
           =>헤더부분
               <?xml version="1.0" encoding="euc-kr" ?>
               <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
                       //필요한 태그(엘레멘트(Element))를 선언한다.
               </xsd:schema>
       
      2. 데이터만 가지는 엘레멘트 만들기
          [형식]
              <element name="태그이름"
                                         [minOccurs="??" maxOccurs="??"] type="데이터형태" />
               * 참고 - minOccurs    최소 반복회수      기본값1
                           maxOccurs   최대 반복회수      기본값1
                           생략             한번만 반드시 써야하는 태그
     
      3. 자식 엘레멘트를 가진 엘레멘트 만들기
          [형식]
                <element name="태그이름" [minOccurs="??" maxOccurs="??"]>
                    <complexType>
                          // 이제부터 복합적인 엘레멘트가 만들어진다.
                         <sequence>
                              // 지금 부터 선언한 것은 반드시 순서대로만 써야한다
                             //자식 엘레멘트 선언
                         </sequence>
                    </complexType>
                </element>

      4. 속성 선언하기
           [형식]
                <xsd:attribute name="속성이름" type="데이터형태" />
           [사용형식]
                <xsd:element name="책이름" type="xsd:string">
                     <xsd:attribute name="ID" type="xsd:string" />
                <xsd:element>

         1) 전체 구성요소
             <xsd:element name="책">
                  <xsd:complexType>
                      <xsd:sequence>  
                           //이 부분에는 그 안에 포함될 하위 요소를 만든다.
                      </xsd:sequence>  
                          // 이 부분에 속성을 만들어 준다.
                  </xsd:complexType>
             </xsd:element>
           
         2) 일반 태그(데이터를 갖는 태그)에 속성 부여
              [형식]
                   <element name="태그이름">
                      <complexType>
                         <simpleContent>
                            <extension base="데이터형식">
                                  속성선언
                            </extension>
                         </simpleContent>
                      </complexType>
                   </element>
   
      5. 엘레멘트의 오버라이드
          * 참고
               Global 엘레멘트 - 다른 엘레멘트에 소속되지 않은 엘레멘트
                                         <complexType>안에서 만들어지지 않은 엘레멘트
                                         ==> 오버라이드가 가능
               Local 엘레멘트  - 다른 엘레멘트 안에서 만들어진 엘레멘트
                                         <complexType>안에서 만들어진 엘레멘트
                                         ==> 오버라이드가 불가능
       
               [오버라이드 하는 형식]
                               <xsd:element ref="오버라이드할 태그이름" />

      6. 엘레멘트의 다형성 구현
          -> 태그의 이름을 여러개로 지정해서 같은 의미로 사용하도록 하는 것
             [형식]
                 <element name="닉네임" type="데이터형태"  substitutionGroup="참조태그" />
 
   ※ 스키마 문서를 이용한 xml문서 만들기
       [형식]
             <최상위태그 xmlns:xsl="http://www.w3.org/2001/XMLSchema-instance"
                                                             xsl:noNamespaceSchemaLocation="파일이름">
             </최상위태그이름>
   
posted by 우디냥
TAG 스키마

DTD

└ᘐ DTD란?
     -> 태그에 대한 정보를 미리 규정해 놓은 방식중의 하나
    
    * 미리 규정해 놓는 이유?
       - 내가 규정한 XML 문서를 다른 사람이 이용할 때를 대비해서...
         => 태그의 의미와 순서등 태그에 대한 정보를 미리 규정해서 알려줌으로써
             사용자가 손쉽게 정보를 얻을 수 있도록 해야 한다.      
     
    * 작성하는 방법
        1. XML문서에 DTD 문서를 직접 넣는 방식
              <? xml version="1.0" >
              <!DOCTYPE
                   DTD형식을 이곳에 기록하는 방식
              >
            => 저장을 할 때는  XML 확장자로 저장
     
        2. DTD 문서만을 따로 만드는 방식
             DTD형식만을 따로 기록해 놓고
            => 저장할 때는 dtd 확장자로 저장
   
           => 따로 dtd문서가 저장된 경우에 이 dtd문서를 이용하는 xml문서를 작성하는 방법
             <? xml version="1.0" >
             <!DOCTYPE 가장최상위태그이름 SYSTEM "dtd 파일이름"
                  DTD형식을 이곳에 기록하는 방식
             >
              
    ▷ DTD에서 태그를 지정하는 방법
         [형식]      
                <!ELEMENT 태그이름 태그의정보형식>

         * 태그의 기본 형식
             1. ANY  - 무슨 형태가 와도 상관이 없다.
                     예>  <!ELEMENT B ANY>
             2.  EMPTY 그 태그 안에는 내용이 와서는 안된다.
                     예>  <!ELEMENT IMG EMPTY>
             3. (#PCDATA)
                 -> 특수 문자를 제외한 문자만을 사용한다.
                 (그러므로 특수문자를 사용할 경우에는 엔티티 기록방식으로 써야한다.)
             4. (다른 태그이름)
                 -> 그 태그 안에는 반드시 다른 태그만을 사용해야 한다.
                      예>  <!ELEMENT table (tr)>
                                 <!ELEMENT tr (td)>
                                     <!ELEMENT td ANY>
             5. (다른태그이름, 다른태그이름...)
                 -> 그 태그 안에는 반드시 지정한 모든 태그가 사용되어야 한다.
                      예>  <!ELEMENT html  (head, body)>
                                 <!ELEMENT head ANY>
                                 <!ELEMENT body ANY>
             6. (다른태그이름 | 다른태그이름)
                 -> 지정한 태그 중에서 하나만 사용하면 된다.
                      예>  <!ELEMENT table(th|tr)>
                                 <!ELEMENT th ANY>
                                     <!ELEMENT tr ANY>      

    ▷ 요소의 반복성 제어
        - 특정 태그가 다른 태그를 여러번 사용 가능하도록 정의하는 방식
          [사용기호]
                  ?   사용안해도 되고 한번까지 허용
                  *   사용안해도 되고 여러번 사용도 허용
                  +   반드시 한번은 사용해야 하고 여러번 사용도 허용
     
         예>  <!ELEMENT member (type?, name, (phone_no | mail)+>
                  type은 안써도 되고 1번까지 허용
                  name은 한번은 꼭 쓰고 1번까지 허용
                  phone_no와 mail은 선택해서 쓰고
                  둘중에 하나는 꼭 써야하며, 여러번 반복 가능          

         예>  <!ELEMENT member (#PCDATA | name)*>
                  내용이 와도 되고 name 태그가 와도 된다.
                  한번도 안써도 되고 두 번이상도 쓸수 있다.    

    ▷ 속성 지정하는 방법
            <!ELEMENT 태그이름 내용>
                     <!ATTLIST  태그이름 속성이름 속성의형태 기본값...>
                           태그이름   이 속성이 포함될 태그의 이름
                           속성이름   그 속성을 대표하는 이름(width)
                           속성형태   그 속성의 사용 형태
                                          (데이터 형태는 항상 문자값이다.)
                           기본값      속성을 지정하지 않을 경우 사용될 값

        * 기본값 지정
           <!ELEMENT member #PCDATA>
                 <!ATTLIST  member name CDATA "아무게">
                    ->name 속성을 지정하지 않아도 되며, 사용하지 않으면 무조건 "아무게"로 한다.
 
           <!ELEMENT member #PCDATA>
                 <!ATTLIST  member name CDATA #REQUIRED>
                    ->이 속성은 반드시 사용해야 한다.
 
           <!ELEMENT member #PCDATA>
                 <!ATTLIST  member name CDATA #IMPLIED>
                    ->이 속성은 생략할 수 있으며, 생략하면 이속성에는 아무값도 기억되지 않는다.

           <!ELEMENT member #PCDATA>
                 <!ATTLIST  member name CDATA #FIXED "박아지">
                    ->무조건 하나의 값으로 지정하고 변경 불가능하게 만드는 것
   
     ▷ 속성의 데이터 타입
           토큰화된 타입 (결정된 데이터 형태)  
                <!ATTLIST  member name ID #REQUIRED>
                   -> 절대로 같은 속성이 같은 문서 안에 나오면 안된다.
                <!ATTLIST  member name IDREF #REQUIRED>
                   -> 그 xml 문서안에 있는 또다른 속성을 이용해야 한다.
                <!ATTLIST  member name IDREFS #REQUIRED>
                   -> 그 xml 문서안에 있는 또다른 속성을 이용해야 한다.
                       복수개를 이용할 수 있다.

          열거형 속성 지정 (선택지정)
                <!ATTLIST  member name (정회원 | 준회원 | 일반회원) #REQUIRED>

     ▷ 엔티티
          -> xml 문서에서 자주 사용할 데이터를 미리 변수에 기억해 놓는것
        [형식]
              <!ENTITY  변수이름 "변수에 기억될 데이터">
        [사용방법]
                     &변수이름;
                        -> 이 부분에 지정한 변수가 기억한 데이터가 기록된다.

        * 엔티티의 종류
             내부 엔티티           저장할 내용을 dtd 파일에 기록하는 것
                                        <!ENTITY  변수이름 "변수에 기억될 데이터">
             외부 엔티티           저장할 내용을 외부 파일을 이용하는 것
                                        <!ENTITY  변수이름 SYSTEM "데이터가 저장된 파일이름">
             매개변수 엔티티     DTD 파일 안에서 사용할 내용을 기억하는 방식
                                        <!ENTITY  % 변수이름 "변수에 기억될 데이터">

    ▷ 외부 파싱 도구 설치
            <!NOTATION IMG  SYSTEM  "IEXPLORE.EXE">
                 IMG                          사용할 파싱 도구의 이름
                 SYSTEM                   외부 자원 사용 선언
                 "IEXPLORE.EXE"       사용할 파싱 도구

    ▷ 외부 파싱 도구를 이용한 엔티티 지정
            <!ENTITY  addr  SYSTEM  "img1.jpg" NDATA IMG>
                 NDATA      외부 파싱 도구 사용 선언
                 IMG          사용할 파싱 도구의 이름

posted by 우디냥
TAG DTD
└ᘐ XML이란?
      -> Extensible Markup Language 의 약자
          확장가능한 마크업 언어  -> 사용자가 기호를 다시 제작해서 사용

    ※ 왜 필요로 하는가?
        - 컴퓨터는 무언가를 실행하기 위해서 각종 자원(정보)를 필요로 한다.
          각각의 정보를 구분하기 위해서 Markup Language 를 이용
     
    ※ Markup Language란?
        - 특정 내용에 의미를 부여하기 위한 기호 언어
 
└ᘐ XML언어의 특징
         태그의 대한 정의(태그가 어떤 의미를 갖는다.)  
             .dtd      
         그 태그를 사용한 정보 제공
             .xml
         화면 출력을 위한 문서
             .xslt
-------------------------------------------------------------------------
└ᘐ 문법에 맞는 문서(Well-formed Document)란?        
     ->XML 문서를 만드는 규칙에 의해 만들어진 문서
        문법적으로 이상이 없는 문서
   
   ▶ XML 문서가 되기 위한 기본 조건
       1. 텍스트 파일로 저장되어야 한다.
       2. 모든 정보는 반드시 그 태그안에 기술되어야 한다.
       3. 대소문자를 구분한다.
       4. 모든태그는 여는 태그와 닫는 태그의 쌍을 이루어야 한다.
       5. 여는 태그와 닫는 태그는 반드시 순서를 지켜야 한다.
          (늦게연 태그가 먼저 닫힌다.)

└ᘐ XML문서의 기분 구조
     1. 프롤로그(PROLOG)
         - 헤더 부분에 해당하는 것으로 <?xml....?>의 형식
           
     2. 요소
        - 실제 정보를 표시하는 단위        
           [형식] <태그이름>정보</태그이름>

      * 요소의 이름(= 태그이름) 짓는 규칙
         1. 첫문자는 문자(영문자, 각나라 문자), _ , : 으로 시작
         2. 두번째부터는 숫자, . , - 도 같이 사용 가능
         3. 대소문자 구분한다.
         4. 절대로 공백이 중간에 있으면 안된다.
         5. xml로 시작하면 곤란하다 - xml 규칙에 의해 이미 만들어진 태그가 있기 때문에 충돌

     * 요소의 내용으로 올 수 있는 것
         1. 일반 문자 정보
         2. 엔티티 문자 정보
         3. 유니코드 번호를 이용한 문자 정보
         4. CDATA 섹션
            -> 입력한 모양 그대로 의미를 담게 만드는 형식
           [형식]
                <![CDATA[입력할 내용들....]]>
         5. 또다른 요소

└ᘐ 속성
     -> 특정 요소에 대한 부가적인 정보를 부여하는 것
       [형식]
             <태그 속성이름="속성값">...</태그>
     
      * 속성으로 만드는 이유?
         - 파싱작업을 할 때 속성을 찾아내는 것이 훨씬 간편하고 손쉽기 때문이다. 
   
posted by 우디냥
prev 1 next

티스토리 툴바