Microsoft MVP성태의 닷넷 이야기
개발 환경 구성: 47. XmlCodeGenerator 1.0.0.4 업데이트 [링크 복사], [링크+제목 복사],
조회: 38675
글쓴 사람
정성태 (techsharer at outlook.com)
홈페이지
첨부 파일
 
(연관된 글이 5개 있습니다.)

XmlCodeGenerator 1.0.0.4 업데이트


예전에 제가 만들어 두었던 XmlCodeGenerator... 아시죠? ^^

XML/XSLT로 구현하는 매크로 확장
; https://www.sysnet.pe.kr/2/0/542

혹시나 싶어서 Visual Studio 2010에서 돌려보니 잘 구동되는 것을 확인했습니다.

[그림 1: Visual Studio 2010에서 동작하고 있는 XmlCodeGenerator]
xmlcodegen_support_vs2010_1.png

만약 기존에 이미 Visual Studio 2008에서 사용하고 있었다면 자동으로 Visual Studio 2010에 올라오지 않기 때문에 한 번 더 등록 과정을 거쳐주면 됩니다. 등록 과정도 간단하지요. ^^

아래의 경로에서 "Tools"을 실행시키고,

DeveloperToolManager.application
; https://www.sysnet.pe.kr/Tools/DeveloperToolManager.application

Visual Studio 2010이 설치된 상태에서 [그림 2]에서 보는 것처럼 "Overwrite" 버튼을 눌러주시면 정상적으로 XmlCodeGenerator 사용자 정의 도구를 사용할 수 있습니다. ^^

[그림 2: XmlCodeGenerator 다시 등록]
xmlcodegen_support_vs2010_2.png




그 외에 작지만 유용한 기능 업데이트들을 했습니다.

1. XSLT 파일 찾기 기능 추가

XSLT의 파일 찾기 순서가 다음과 같이 개선되었습니다.

  1. XML 파일이 있는 폴더에서 XML 파일명과 동일한 이름의 XSLT 확장자를 가진 파일
  2. 1번의 파일이 없으면, XML 파일이 있는 폴더에서 default.xslt 이름의 파일
  3. 2번의 파일이 없으면, 루트 폴더까지 탐색하면서 1번과 같은 규칙의 XSLT 확장자를 가진 파일
  4. 3번의 파일이 없으면, 루트 폴더까지 탐색하면서 default.xslt 이름의 파일

2. 프로젝트 Namespace를 xsl:param으로 전달받는 기능

드디어 ^^ 프로젝트의 네임스페이스를 전달받을 수 있도록 했습니다. 사용 방법은 간단합니다.
만약 프로젝트의 Namespace 설정이 아래와 같이 "My.TestTool"로 설정되이 있는 경우,

[그림 3: 프로젝트의 기본 네임스페이스]
xmlcodegen_support_vs2010_3.png

이 문자열을 XSLT에서 얻기 위해 다음과 같이 "XCG_Namespace"라는 이름의 xsl:param으로 받아서 사용할 수 있습니다.

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0"
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  xmlns:xs="http://www.w3.org/2001/XMLSchema"
>
    <xsl:param name="XCG_Namespace"/>

    <xsl:template match="definitions">

/*
Namespace: <xsl:value-of select="$XCG_Namespace" />
*/
    </xsl:template>
</xsl:stylesheet>

만약 특정 XML에서만 네임스페이스를 변경하고 싶다면 Visual Studio에서 해당 XML 파일을 선택하고, 다음과 같이 속성창에서 "Custom Tool Namespace"를 바꿔줄 수 있습니다.

[그림 4: Custom Tool Namespace 변경]
xmlcodegen_support_vs2010_4.png

3. 중앙 관리화할 수 있는 XSLT 파일 찾기

위의 1번 과정에서 설명한 XSLT 파일 찾기의 경우 프로젝트가 위치한 폴더 기반의 상위 루트에 XSLT 파일이 있도록 해두었는데 어찌 보면 이런 파일 경로 풀이는 매우 불편할 수 있습니다. 그래서 생각해 낸 것이 XSLT 파일을 중앙 관리할 수 있는 경로 풀이를 하나 더 추가했습니다. 사용법 역시 매우 간단합니다.

사용자는 XML 파일에 다음과 같이 "xcg-xsltKey"라는 Processing Instruction을 두어서 XSLT 파일을 구분할 수 있는 키를 정의할 수 있도록 했습니다.

<?xml version="1.0" encoding="utf-8" ?>
<?xcg-xsltKey WPF.ClassMemberDef?>

<my>
  
</my>

위에서는 xcg-xsltKey 값으로 "WPF.ClassMemberDef"가 설정되어 있는데요. 이렇게 되면 이 XML 파일을 변형할 XSLT 파일을 다음의 경로에서 찾게 됩니다.

XSLT 경로: [XmlCodeGenerator가 설치된 경로]\WPF.ClassMemberDef.xslt

만약, XmlCodeGenerator를 "C:\Tools"에 설치했다면 찾아오는 XSLT 경로는 "C:\Tools\WPF.ClassMemberDef.xslt"가 됩니다. 이렇게 되면 모든 프로젝트에서 동일한 "xcg-xsltKey"라는 동일한 PI(Processing Instruction)를 두고 재사용하는 것이 가능합니다.




뭐... 이 정도면 많이 쓸만해졌죠! ^^



[이 토픽에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]

[연관 글]






[최초 등록일: ]
[최종 수정일: 8/26/2021]

Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
by SeongTae Jeong, mailto:techsharer at outlook.com

비밀번호

댓글 작성자
 



2009-08-18 01시09분
[짜두] 날마다 업뎃되는군요 ^^
[guest]
2016-06-14 12시28분
정성태

... 76  77  78  79  80  81  82  83  84  85  86  87  [88]  89  90  ...
NoWriterDateCnt.TitleFile(s)
11737정성태10/13/201816937오류 유형: 493. Azure Kudu - There are ... items in this directory, but maxViewItems is set to 299
11736정성태10/12/201818538오류 유형: 492. Visual Studio 로딩 시 오류 - The 'Scc Display Information' package did not load correctly.
11735정성태10/12/201824347VS.NET IDE: 129. Visual Studio - 특정 문자(열)를 개행 문자로 바꾸는 방법
11734정성태10/10/201818666Linux: 4. Synology NAS(DS216+II)에 FTDI 장치 연결 후 C#(.NET Core)으로 DTR 제어파일 다운로드1
11733정성태10/10/201821405Linux: 3. Synology NAS(DS216+II)에서 FTDI 장치를 C/C++로 제어
11732정성태10/10/201821220디버깅 기술: 119. windbg 분석 사례 - 종료자(Finalizer)에서 예외가 발생한 경우 비정상 종료(Crash) 발생파일 다운로드1
11731정성태10/9/201820632개발 환경 구성: 409. C# - REST API를 이용해 Azure Kudu 서비스 이용 - 웹 앱 확장 처리파일 다운로드1
11730정성태10/9/201819918개발 환경 구성: 408. C# - REST API를 이용해 Azure Kudu 서비스 이용 - 파일 처리파일 다운로드1
11729정성태10/9/201822415Windows: 150. 윈도우에서 ARP Cache 목록 확인 및 삭제하는 방법
11728정성태10/9/201820209사물인터넷: 50. Audio Jack 커넥터의 IR 적외선 송신기 [1]
11727정성태10/8/201821495오류 유형: 491. Visual Studio의 리눅스 SSH 원격 연결 - "Connectivity Failure. Please make sure host name and port number are correct."
11726정성태10/7/201824132사물인터넷: 49. 라즈베리 파이를 이용해 원격 컴퓨터의 전원 스위치 제어파일 다운로드1
11724정성태10/5/201823882개발 환경 구성: 407. 유니코드와 한글 - "Hangul Compatibility Jamo"파일 다운로드1
11723정성태10/4/201817592개발 환경 구성: 406. "Docker for Windows" 컨테이너 내의 .NET Core 응용 프로그램에서 직렬 포트(Serial Port, COM Port) 사용 방법
11722정성태10/4/201821354.NET Framework: 798. C# - Hyper-V 가상 머신의 직렬 포트와 연결된 Named Pipe 간의 통신파일 다운로드1
11721정성태10/4/201821700.NET Framework: 797. Linux 환경의 .NET Core 응용 프로그램에서 직렬 포트(Serial Port, COM Port) 사용 방법파일 다운로드1
11720정성태10/4/201823216개발 환경 구성: 405. Hyper-V 가상 머신에서 직렬 포트(Serial Port, COM Port) 사용
11719정성태10/4/201823843.NET Framework: 796. C# - 인증서를 윈도우에 설치하는 방법
11718정성태10/4/201818992개발 환경 구성: 404. (opkg가 설치된) Synology NAS(DS216+II)에 cmake 설치
11717정성태10/3/201821544사물인터넷: 48. 넷두이노의 C# 네트워크 프로그램 [1]
11716정성태10/3/201822158사물인터넷: 47. Raspberry PI Zero (W)에 FTDI 장치 연결 후 C/C++로 DTR 제어파일 다운로드1
11715정성태10/3/201820889사물인터넷: 46. Raspberry PI Zero (W)에 docker 설치
11714정성태10/2/201820143사물인터넷: 45. Raspberry PI에 ping을 hostname으로 하는 방법
11713정성태10/2/201822546개발 환경 구성: 403. Synology NAS(DS216+II)에 docker 설치 후 .NET Core 2.1 응용 프로그램 실행하는 방법
11712정성태10/2/201827744.NET Framework: 795. C# - 폰트 목록을 한글이 아닌 영문으로 구하는 방법 [3]
11711정성태10/2/201823176오류 유형: 490. 윈도우 라이선스 키 입력 오류 0xc004f050, 0xc004e028
... 76  77  78  79  80  81  82  83  84  85  86  87  [88]  89  90  ...