2012-02-24 2 views
1

Windows에서 Xalan 1.10의 C++ 버전을 사용하고 있으며 XML 문서에서 Apache FOP 파일을 생성하려고합니다.XSLT 변환 출력에 부품이 없습니다.

파일은 오히려 크고 복잡하지만 다음 샘플은 잘 문제를 설명 :

<xsl:transform version="1.0" 
      xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
      xmlns:fo="http://www.w3.org/1999/XSL/Format"> 
    <xsl:output method="text" indent="no"/> 

    <xsl:template match="/"> 
    <fo:root> 
     <xsl:text>(ROOT MATCHED)</xsl:text> 
     <xsl:apply-templates select="root-xml-element"/> 
    </fo:root> 
    </xsl:template> 

    <xsl:template match="root-xml-element"> 
    <xsl:text>(ROOT ELEMENT MATCHED)</xsl:text> 
    <xsl:call-template name="MyTemplate"/> 
    </xsl:template> 

    <xsl:template name="MyTemplate"> 
    <xsl:text>(MY TEMPLATE MATCHED)</xsl:text> 
     <fo:layout-master-set> 
     <fo:simple-page-master master-name="Master" page-width="29.7cm" page-height="21cm"> 
     </fo:simple-page-master> 
     </fo:layout-master-set> 
    </xsl:template> 
</xsl:transform> 

Input.xml

<?xml version="1.0" encoding="utf-8"?> 
    <root-xml-element> 
    <MyElement name="Some text"/> 
    </root-xml-element> 

Stylesheet.xsl 변환은 오류없이 완료되지만 다음과 같이 생성됩니다. 불완전 출력 : 당신이 볼 수 있듯이 Xalan에

(ROOT MATCHED)(ROOT ELEMENT MATCHED)(MY TEMPLATE MATCHED) 

에서

출력 파일, 출력 파일에는 <fo:...> 태그가 없습니다. 템플릿이 적용됩니다. 나는 그 매우 동일한 파일에 대한 .NET의 XSLT 프로세서를 실행하면

, I 출력 내가 기대 얻을 :

출력 파일을 닷넷 XSLT 프로세서도

<?xml version="1.0" encoding="utf-8"?> 
    <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format"> 
    (ROOT MATCHED)(ROOT ELEMENT MATCHED)(MY TEMPLATE MATCHED) 
    <fo:layout-master-set> 
     <fo:simple-page-master master-name="Master" page-width="29.7cm" page-height="21cm" /> 
    </fo:layout-master-set> 
    </fo:root> 

같은 변화에서 Java Xalan 버전에서 적용될 때 작동합니다 (어느 것이 정확히 모름). 반면에 명령 행 Xalan 실행 파일은 동일한 불완전한 결과물을 생성하기 때문에 무언가를 엉망으로 만든 코드가 아닌가?

여기 무슨 일 이니? 어떤 아이디어를 확인해야합니까?

답변

2

출력 방법이 텍스트로 설정됩니다. 나는 Xalan이 XML 노드가 아닌 실제 텍스트만을 출력하고 있다고 생각한다. 나는 정확한 동작 인 손을 기억할 수 없기 때문에 Xalan 또는 .NET이 잘못 작동하고 있는지 여부는 확실하지 않습니다 (사양이 유연한 경우도 아닐 수도 있음). 그러나 출력 방법을 XML로 변경하면 작동합니다. .

+0

감사합니다. 출력 지시어를 'xml'으로 변경하면 샘플이 예상대로 작동합니다. 어떤 이상한 이유 때문에 필자가 작업하고있는 실제 파일은 여전히 ​​불완전한 결과물을 만들어 내고 있지만 앞으로는 문제가되는 뭔가가 있어야한다고 가정합니다. 동작의 차이가 내 샘플 스타일 시트가 실제로 입력 문서의 데이터를 출력하지 않는다는 사실의 결과가 아니길 바랍니다. – user1156361

+0

발견. 내 스타일 시트는 다른 것들을 포함하고, 그 스타일 시트들에서 나는 출력 지시어를 '텍스트'로 설정하고, 효과적으로 주요 지시어를 무시했다. 당신의 도움을 주셔서 감사합니다! – user1156361