2013-07-25 2 views
0

PDF로 생성되어야하는 문서가 있습니다. Xalan과 Apache FOP를 사용하여 XSLT가 포함 된 XML을 XSL-FO로 처리합니다. 나는 (disable-output-escaping="yes"를 사용하여) 적절한 HTML을 얻을뿐만 아니라 (? exsl:node-set)를 노드 집합을 얻을 수 있습니다뿐만 아니라 어떻게XML 노드에서 XSLT를 통해 XSL-FO로 이스케이프 처리 된 HTML

<root> 
    <formula> 
     <text>3+10*10^-6*l</text> 
     <html>&lt;html xmlns="http://www.w3.org/1999/xhtml"&gt;3 &middot; + 10 &middot; 10&lt;sup&gt;-6&lt;/sup&gt; · &lt;i&gt;l&lt;/i&gt;&lt;/html&gt;</html> 
    </formula>  
</root> 

내가 처리 할 수 ​​있습니다 : 내 XML 트리에서

이 같은 노드가 나중에? 내 PDF 출력에이를 통합하기 위해 HTML 공식의 XSL-FO 표현을 원합니다.

<xsl:template match="xhtml:b"> 
    <fo:inline font-weight="bold"><xsl:apply-templates/></fo:inline> 
</xsl:template> 

같은

뭔가 saxon:parse()를 사용하는 솔루션이있을 수 있습니다. 그러나 나는 Xalan-J에서 그 것으로 전환 할 수 없다.

내 시나리오에는 솔루션이 있습니까?

답변

1

당신은 확실히 다음 XHTML 마크 업 직렬화 된 결과 문서를 생성

<xsl:template match="html"> 
    <xsl:value-of select="." disable-output-escaping="yes"/> 
</xsl:template> 

을 수행 Xalan을 함께 처리하는 하나의 스타일 시트를 작성할 수 있습니다.

두 번째 스타일 시트는 첫 번째 스타일 시트의 결과 문서를 처리 할 수 ​​있습니다.

<xsl:template match="xhtml:html" xmlns:xhtml="http://www.w3.org/1999/xhtml"> 
    <xsl:apply-templates/> 
</xsl:template> 

하지만 미상 같은 결과 트리 단편을 하나의 스타일 시트 내에서 할 수 없습니다 (해제 출력 - 탈출)는 직렬화 기능이며 결과 트리 조각 작업하는 경우 노드 세트로 변환 하나의 스타일 시트 내에서 exsl:node-set 또는 유사 항목을 사용하면 직렬화가 발생하지 않습니다.

더 자세히 살펴보면 스 니펫에는 &middot;과 같은 선언되지 않은 항목에 대한 참조가 포함되어있는 것으로 보입니다. 샘플은 XML로 해석되지 않으므로 먼저 XSLT 처리를 수정해야합니다.