XmlCodeGenerator 1.0.0.4 업데이트
예전에 제가 만들어 두었던 XmlCodeGenerator... 아시죠? ^^
XML/XSLT로 구현하는 매크로 확장
; https://www.sysnet.pe.kr/2/0/542
혹시나 싶어서 Visual Studio 2010에서 돌려보니 잘 구동되는 것을 확인했습니다.
[그림 1: Visual Studio 2010에서 동작하고 있는 XmlCodeGenerator]
만약 기존에 이미 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 다시 등록]
그 외에 작지만 유용한 기능 업데이트들을 했습니다.
1. XSLT 파일 찾기 기능 추가
XSLT의 파일 찾기 순서가 다음과 같이 개선되었습니다.
- XML 파일이 있는 폴더에서 XML 파일명과 동일한 이름의 XSLT 확장자를 가진 파일
- 1번의 파일이 없으면, XML 파일이 있는 폴더에서 default.xslt 이름의 파일
- 2번의 파일이 없으면, 루트 폴더까지 탐색하면서 1번과 같은 규칙의 XSLT 확장자를 가진 파일
- 3번의 파일이 없으면, 루트 폴더까지 탐색하면서 default.xslt 이름의 파일
2. 프로젝트 Namespace를 xsl:param으로 전달받는 기능
드디어 ^^ 프로젝트의 네임스페이스를 전달받을 수 있도록 했습니다. 사용 방법은 간단합니다.
만약 프로젝트의 Namespace 설정이 아래와 같이 "My.TestTool"로 설정되이 있는 경우,
[그림 3: 프로젝트의 기본 네임스페이스]
이 문자열을 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 변경]
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)를 두고 재사용하는 것이 가능합니다.
뭐... 이 정도면 많이 쓸만해졌죠! ^^
[이 토픽에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]