반응형

XML 작업

 

 SQL 2005 SSIS에 포함되어 있는 XML 작업 XML 파일과 관련되어 다양한 작업을 수행할 수 있는 작업 개체입니다.

XML 데이터를 조회하거나, 변경, 병합 또는 새로운 XML 결과 파일을 생성할 수 있습니다.

 

XML 작업 개체를 이용하여 다음과 같은 작업을 수행할 수 있습니다.

 

Ÿ   여러 XML 데이터를 병합하여 하나의 XML 파일로 병합하는 작업

Ÿ   XSLT Style Sheet을 이용하여 XML 파일의 결과값 출력 작업

Ÿ   XPATH를 이용한 XML 파일 내의 데이터 조회 작업

Ÿ   서로 다른 두 개의 XML 파일들에 대한 비교 및 XML Diffgram 파일에 해당 차이점 기록 작업

Ÿ   XML 파일에 대한 유효성 검사 작업

 

 

XML 작업의 속성 편집기 창에는 다른 작업들에 비해 상당히 많은 속성을 지정할 수 있으며, 작업 유형(OperationType)에 따라 각 작업 속성의 의미가 달라집니다.

 

 

 

 

 

공통 속성

Ÿ           입력

OperationType – XML 작업의 유형을 설정합니다. 작업 속성은 다음과 같습니다.

ú           Validate - DTD(문서 유형 정의) 또는 XSD(XML 스키마 정의) 스키마와 비교하여 XML 문서의 유효성을 검사합니다.

ú           XSLT – 원본 XML 문서를 XSL Style Sheet에 지정된 형태로 출력합니다.

ú           XPATH – XPATH라는 XML 데이터 조회 문을 이용하여 원본 XML 문서에 있는 데이터를 조회합니다.

ú           Merge – 두 개의 XML 문서를 병합합니다.

ú           Diff – 두 개의 XML 문서를 비교합니다. 비교 작업은 다양한 수준으로 설정할 수 있습니다.

ú           Patch – 비교 작업에서 두 문서간의 비교 결과인 XDL Diffgram 출력을 생성한 경우, 이 결과를 이용하여 원본에 대해 변경 작업을 수행한 후, 새로운 결과를 생성합니다.

ú           SourceType – 원본 XML에 대한 형태를 지정합니다. 변수, 직접 입력, 파일 연결로 설정할 수 있습니다.

 

Ÿ           출력
SaveOperationResult –
결과를 저장할 것인지를 설정합니다. True로 설정한 경우, OperationResult 속성 부분에서 결과 파일 형태를 지정할 수 있습니다.

 

 

 

OperationType = Validate

원본 XML 문서에 대한 유효성을 체크합니다.

 

Ÿ           유효성 검사 옵션

ValidationType – 유효성 검사 작업 유형을 설정합니다.

ú           DTD – DTD(Document Type Definition)를 사용합니다.

ú           XSD – XSD(XML Schema Definition)를 사용합니다. 이 경우, XSD 스키마 파일을 지정해 줘야 합니다

FailOnValidationFail – 유효성 검사 결과가 실패(유효하지 않음)인 경우, XML 작업을 실패로 처리할 지를 설정합니다.

 

 

 

OperationType = XSLT

XSLT XML 문서를 다른 형태의 XML 형태 또는 문서 형태로 출력하기 위한 변환 언어로 작성된 문서입니다. OperationType 속성 값을 XSLT로 지정한 후, XSLT 문서를 설정하여, 원본 XML 문서를 사용자가 원하는 형태로 출력할 수 있습니다.

 

Ÿ           두 번째 피연산자
XSLT
문서를 지정합니다..

 

 

 

OperationType = XPATH

XPATH 쿼리를 이용하여 원본의 XML 데이터의 값을 조회합니다.

 

Ÿ           XPath 옵션
PutResultInOneNode –
결과를 단일 노드에 쓸지를 설정합니다.

PutResultInOneNode = True 인 경우

<ResultRootNode>

 <Address AddressID="497" AddressLine1="#9900 2700 Production Way" />

 <Address AddressID="13079" AddressLine1="081, boulevard du Montparnasse" />

</ResultRootNode>

PutResultInOneNode = False 인 경우

<Address AddressID=”497” AddressLine1=”#9900 2700 Production Way” />

<Address AddressID=”13079” AddressLine1=”081, boulevard du Montparnasse” />

 

XPathOperation – 결과 형태를 설정합니다.

ú           계산 – XPath 쿼리의 결과를 반환합니다.

ú           노드 목록 - XPath에서 지정한 노드를 XML 형태로 반환합니다.

ú           – XPath에서 지정한 노드의 내부 텍스트 값을 연결 문자열로 반환합니다.

Ÿ           두 번째 피연산자
XQuery
를 지정합니다. 변수, 직접 입력, 파일 연결로 지정할 수 있습니다.

 

 

 

OperationType = Merge

두 개의 서로 다른 XML 문서 또는 데이터를 병합하는 작업을 수행합니다.

 

Ÿ           두 번째 피연산자
입력 부분에 지정된 첫 번째 XML 문서와 병합할 두 번째 XML 문서를 지정합니다.

 

Ÿ           병합 옵션
병합 작업을 수행할 때 사용할 XPath 쿼리 유형 및 XPath 쿼리를 지정합니다. 만약 단순히 두 문서를 병합할 경우, XPathStringSource 를 공백으로 설정하면 됩니다. 물론 이 경우, 두 문서간의 구조가 유효해야 합니다.

 

 

 

OperationType = Diff

두 개의 서로 다른 XML 문서 또는 데이터에 대해 비교 작업을 수행합니다.

 

Ÿ           두 번째 피연산자
입력 부분에 지정된 첫 번째 XML 문서와 비교할 두 번째 XML 문서를 지정합니다.

Ÿ           비교 옵션

DiffAlgorithm – 문서를 비교할 때 사용할 알고리즘을 지정합니다.

ú           자동 - XML 작업에서 처리 속도가 빠른 알고리즘을 사용할 것인지 아니면 정확도가 높은 알고리즘을 사용할 것인지 결정합니다.

ú           빠름 - 빠르지만 정확도가 떨어지는 비교 알고리즘을 사용합니다.

ú           정확 - 정확한 비교 알고리즘을 사용합니다.

DiffOptions – 비교 작업에서 적용할 비교 옵션을 설정합니다.

ú           IgnoreXMLDeclaration - XML 선언을 비교할지 여부를 설정합니다.

ú           IgnoreDTD - DTD(문서 유형 정의)를 무시할지 여부를 설정합니다.

ú           IgnoreWhiteSpaces - 공백을 비교할지 여부를 설정합니다.

ú           IgnoreNamespaces – 각 요소의 네임스페이스 URI(Uniform Resource Identifier)와 해당 요소의 특성 이름을 비교할지 여부를 설정합니다.

ú           IgnoreProcessingInstructions - 처리 명령을 비교할지 여부를 설정합니다.

ú           IgnoreOrderOfChildElements - 자식 요소의 순서를 비교할지 여부를 설정합니다.

ú           IgnoreComments - 주석 노드를 비교할지 여부를 설정합니다.

ú           IgnorePrefixes - 요소와 특성 이름의 접두사를 비교할지 여부를 설정합니다.

FailOnDifference – 두 문서 간 차이점이 발생될 경우, XML 작업을 실패로 처리할 지를 설정합니다.

SaveDiffGram – 두 문서 간의 비교 결과인 DiffGram 문서를 출력할 지를 설정합니다.

DiffGramSave – SaveDiffGram 속성이 True인 경우, DiffGram 문서를 저장할 위치를 지정합니다.

 

 

 

OperationType = Patch

두 개의 서로 다른 XML 문서에 대해 비교한 후, 차이점에 대해 보정 작업을 수행할 경우에 이 작업 유형을 사용합니다. 예를 들어, 동일한 구조의 XML 문서에서 원본은 <ID>497</ID>, 비교 대상은 <ID>499</ID> 인 경우, Diff 연산을 수행한 후, DiffGram 결과를 저장하도록 한 후 확인해 보면 원본의 497 값을 499로 바꿀 수 있는 DiffGram 문이 생성됩니다. DiffGram 문서와 원본 XML 문서를 이용하여 ID 499로 변경하는 작업이 Patch 작업입니다.

 

Ÿ           두 번째 피연산자
입력 부분에 지정된 첫 번째 XML 문서에 대해 변경 작업을 수행할 DiffGram 문서를 지정합니다.

 

 

 

 

따라하기

 

간단한 XML 데이터를 XSLT를 이용하여 html형식의 파일로 출력하는 예를 수행해 봅니다.

 

1.       BIDS(Business Intelligence Development Studio)를 실행시켜서 빈 Integration Services 프로젝트를 엽니다. 작업 창의 오른쪽에 있는 솔루션 탐색기 중 SSIS 패키지 부분에서 XMLSample.dtsx 라는 이름으로 패키지 파일을 하나 추가합니다.

 

2.       왼쪽 도구 상자에서 XML 작업을 선택한 후, 제어 흐름 영역에 추가하고, 이름을 [XSLT 출력]으로 변경합니다.

 

3.       XML 작업 속성 편집기 창에서 입력 부분의 OperationTypeXSLT로 설정하고, SourceType직접 입력, SecondOperandType직접 입력으로 설정합니다. 원본 및 XSLT를 별도의 파일로 만든 후, 파일 연결 관리자를 이용하여 사용해도 되지만, 간략히 하기 위해 직접 입력으로 설정합니다.

 

4.       입력 부분의 Source에 아래의 원본 XML, 두 번째 피연산자SecondOperand 부분에 아래의 XSLT를 입력합니다.

원본 XML

<?xml version="1.0" encoding="euc-kr"?>

<addressBook>

  <address>

    <name>홍길동</name>

    <handphone>011-111-1111</handphone>

    <home>서울시 영등포구 여의도동...</home>

    <birthday>1556.01.01</birthday>

    <hobby1>컴퓨터</hobby1>

    <hobby2>오락하기</hobby2>

  </address>

  <address>

    <name>김철수</name>

    <handphone>011-111-2222</handphone>

    <home>서울시 송파구 잠실동..</home>

    <birthday>1975.01.02</birthday>

    <hobby1>당구</hobby1>

    <hobby2>골프</hobby2>

  </address>

  <address>

    <name>한대성</name>

    <handphone>016-494-0000</handphone>

    <home>서울시 강동구 길동...</home>

    <birthday>1900.05.14</birthday>

    <hobby1>웹서핑</hobby1>

    <hobby2>졸기</hobby2>

  </address>

</addressBook>

      
       XSLT

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:output method="html" />

<xsl:template match="/">

  <html>

    <head>

      <title>주소록</title>

    </head>

    <body>

      <table border="1">

        <tr>

          <th>이름 </th><th>주소</th><th>취미1</th><th>취미2</th>

        </tr>

        <xsl:for-each select="addressBook/address"> 

           <tr>

            <td><xsl:value-of select="name"/></td>

            <td><xsl:value-of select="home"/></td>

            <td><xsl:value-of select="hobby1"/></td>

            <td><xsl:value-of select="hobby2"/></td>

           </tr>

        </xsl:for-each>

      </table>

    </body>

  </html>

</xsl:template>

</xsl:stylesheet>

 

5.       출력 부분의 SaveOperationResult 속성을 True로 설정한 후, OperationResult 속성의 + 단추를 클릭하여 확장 속성을 지정합니다.
DestinationType
파일 연결로 설정하고, OverwriteDestinationTrue로 설정한 후, Destination 속성에서 <새 파일 연결..>을 클릭하여 결과가 저장될 html 파일을 지정합니다. 이 때 파일 연결 관리자에서 사용 유형파일 만들기로 지정합니다.



6.       패키지를 수행한 후, 생성된 Html 형태의 결과를 확인합니다.



 

 

SQL Server 2005에서는 XML과 관련된 기능이 많이 향상되었습니다. SSIS에서도 역시 다양한 XML 기능이 추가되어 XML 데이터를 이용한 처리 작업을 편리하게 수행할 수 있습니다.


반응형

+ Recent posts