2009-11-06 6 views
1

VS에서 개발 한 XSLT 변환이 있습니다. VS를 사용하여 XML을 실행하면 (XML-> Show Xslt Output을 통해) 훌륭하게 작동합니다. 그러나 MsBuildCommunityTasks Xslt 작업을 통해 실행하면 크게 다른 결과를 얻습니다.Xslt 작업이 예상대로 작동하지 않습니다.

특히, 출력은 내 XSLT에서 참조조차하지 않는 몇 가지 요소의 내용 일뿐입니다. 기본 변환을 선택하는 것 같아요. VS는 내부적으로 사용하는 것 이외의 다른 XSLT 엔진을 사용

<Xslt 
    Inputs="BuildLo​gs\partcover-result​s.xml" 
    Xsl="ExtTools\​xslt\partcover.asse​mbly.report.xsl​" 
    RootTag="" 
    RootAttributes="" 
    Output="partcov​er.assembly.report.h​tml" 
/> 

아마도 msbuildtasks :

내 작업 선언은 간단을 얻을 수 있을까? 모든 지침을 부탁드립니다.

+5

xslt, 올바른 출력 및 잘못된 출력이 없으면 디버깅하기가 어렵습니다. –

답변

0

또한이 Xslt-task가 RootTag 및 Attributes로 작업하기 위해 노력하면서 시간을 보냈습니다. 일부 2시간 후 내가 포기하고 대신이

public override bool Execute() 
{ 
    bool result = true; 

    Log.LogMessage("Transforming from {0} to {1} using {2}", 
     XmlFile, OutputFile, XsltFile); 

    XmlWriter xmlWriter = null; 

    try 
    { 
     XslCompiledTransform xslTransform = GetXslTransform(XsltFile); 
     XmlReader xmlReader = GetXmlReader(XmlFile); 
     xmlWriter = GetXmlWriter(OutputFile); 
     xslTransform.Transform(xmlReader, xmlWriter); 
    } 
    catch (Exception e) 
    { 
     Log.LogErrorFromException(e); 
     result = false; 
    } 
    finally 
    { 
     if (xmlWriter != null) 
     { 
      xmlWriter.Flush(); 
      xmlWriter.Close(); 
     } 
    } 

    return result; 
} 
2

나는이 문제가 잘 작동하는 <Xslt />을 받고 있었다 .. 내 첫 번째 시도에 근무하는 끝내야 내 자신의 작업을 썼다. .NET 4.0부터는 XmlTransformation 작업이 내장되어 있습니다. 귀하의 예를 찾는 방법은 다음과 같습니다.

<XslTransformation 
    OutputPaths="partcov​er.assembly.report.h​tml" 
    XmlInputPaths="BuildLo​gs\partcover-result​s.xml" 
    XslInputPath="ExtTools\​xslt\partcover.asse​mbly.report.xsl" 
    /> 

저에게 처음으로 일했습니다! MSBuild의 XSLT 옵션에 대한 좋은 개요를 제공 한 Bryan Cook에게 the urban canuk, eh을 제공합니다.

0

전에 변환이 실행 된 후 RootTag가 적용됩니다. Xslt를 작성할 때 RootTag를 고려하면 작동합니다.

관련 문제