2009-07-17 4 views
0

XML 데이터 파일에서 여러 HTML 보고서 파일을 생성해야하고 C# (.NET 3.5)을 사용하고 있습니다. 본질적으로 XML 파일의 특정 하위 트리 각각에 대해 HTML 보고서가 필요합니다 (그러나 부모 정보가 포함되어야합니다).여러 출력 파일을 생성하는 XslTransform.Transform

XSLT를 사용하기로 결정했습니다. 내 문제에 대한 가장 우아한 해결책 인 것 같습니다. 그런 다음 .NET XslTransform.Transform 메서드를 사용하여 HTML 파일을 만들 수 있습니다. 아니면 할 수 있습니까?

MSDN에서 보니 .NET 3.5에서도 XslTransform은 XSLT 1.0 만 지원합니다. 2.0이 얼마 동안 있었지만. 단일 XSLT 파일의 여러 문서 출력은 XSLT 2.0에서만 가능했습니다.

생각할 수있는 문제에 대한 해결 방법이 있습니까?

+0

어디에 문제가 있습니까? 나는 닷넷이 XML 문서를 DOM 표현 (비싼 부분)으로 파싱 할 것이라고 가정하고있다. 그런 다음 여러 개의 XSLT 템플릿을 만들어 동일한 DOM에 적용하면됩니다. 유지 보수성 관점에서 볼 때 이것은 출력 파일 이름을 XSLT에 저장하는 것보다 훨씬 낫습니다. – kdgregory

답변

1

외부 클래스 라이브러리를 사용하도록 허용 된 경우 AltovaXML을 사용하여이 문제를 해결할 것을 제안합니다. 나는 개인적으로 그것에 대해 말할 좋은 것들을 가지고 있습니다.

<xsl:template match="/"> 
<xsl:for-each select="Item">   
<xsl:variable name="filename" select="concat($solutionRoot,'\',$v1,'\',$v2,'.html')" /> 
<xsl:value-of select="$filename"/> 
<xsl:result-document href="{$filename}" format="html-format"> 

    --Place document construction code here-- 

</xsl:result-document> 
</xsl:for-each> 
</xsl:template> 

는 기본적으로 데이터의 각 섹션 새 파일 이름을 생성 변수로 파일의 이름을 설정 : 출력으로 여러 문서를 생성하는 코드에 관해서는, 당신의 XSLT 파일은 다음과 같이 보일 것이다.

+0

감사합니다. WYSIWYG 스타일의 XSLT 도구가 여기에 선전 된 것을 보았습니다. 한 번 사용해 보겠습니다. – cgyDeveloper

0

예. XSLT에서 루트 아래에 "n"개의 요소가있는 문서 하나를 생성하게하십시오. 코드에서 "n"문서를 생성하는 코드를 사후 처리하도록합니다.

0

Saxon (.net 버전)은 XSLT 2 구현의 표준입니다. XSLT 2.0 표준의 참조 구현 일뿐 만 아니라 고도로 최적화되고 오픈 소스이며 (IKVM 라이브러리를 통해) 관리 코드로 실행되며 일반적인 .net 인터페이스를 지원합니다.

<xsl:result-document> 요소를 문제없이 사용할 수 있습니다.

관련 문제