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 실행 파일은 동일한 불완전한 결과물을 생성하기 때문에 무언가를 엉망으로 만든 코드가 아닌가?
여기 무슨 일 이니? 어떤 아이디어를 확인해야합니까?
감사합니다. 출력 지시어를 'xml'으로 변경하면 샘플이 예상대로 작동합니다. 어떤 이상한 이유 때문에 필자가 작업하고있는 실제 파일은 여전히 불완전한 결과물을 만들어 내고 있지만 앞으로는 문제가되는 뭔가가 있어야한다고 가정합니다. 동작의 차이가 내 샘플 스타일 시트가 실제로 입력 문서의 데이터를 출력하지 않는다는 사실의 결과가 아니길 바랍니다. – user1156361
발견. 내 스타일 시트는 다른 것들을 포함하고, 그 스타일 시트들에서 나는 출력 지시어를 '텍스트'로 설정하고, 효과적으로 주요 지시어를 무시했다. 당신의 도움을 주셔서 감사합니다! – user1156361