2014-10-20 5 views
0

xinclude를 사용하는 XML 문서의 스타일을 지정하여 모듈 목적으로 다른 XML 파일을 포함하려고합니다. 변환을 시각화하기위한 도구로 Firefox를 사용하고 있습니다. I에 유래에 대한 몇 가지 게시물이 비슷한 질문 알고XSL을 사용하여 여러 개의 XInclude로 XML 스타일 지정

<?xml version="1.0" encoding="UTF-8"?> 
<?xml-stylesheet type='text/xsl' href='messages-xsl.xml'?> 

<interfaces> 
    <message name="some_message"> 
     <xi:include href="some_message.xml" xmlns:xi="http://www.w3.org/2003/XInclude"/> 
    </message> 
</interfaces> 

:

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
          xmlns:xi="http://www.w3.org/2001/XInclude" 
          exclude-result-prefixes='xsl xi'> 
    <xsl:template match="/interfaces"> 
     <html> 
      <head> 
       <meta charset="UTF-8" content="text/html" http-equiv="Content-Type"/> 
       <title>Messages</title> 
      </head> 
      <body> 
       <xsl:apply-templates select="message"/> 
      </body> 
     </html> 
    </xsl:template> 

    <xsl:template match="message"> 
     <xsl:value-of select="@name"/><br/> 
     <xsl:apply-templates select="xi:include[@href][@parse='xml' or not(@parse)]" /> 
    </xsl:template> 

    <xsl:template match="xi:include"> 
     Should be outputed...<xsl:apply-templates select="document(@href)" /> 
    </xsl:template> 

</xsl:stylesheet 

는 다음과 같은 XML을 처리하려면 : 나는 다음과 XSL을 작곡 한 순간에 (모든 파일이 같은 폴더에 있습니다) 질문하지만 지금까지 문제를 해결할 수 없습니다. 미리 감사드립니다.

답변

1

XSLT가 xmlns:xi="http://www.w3.org/2001/XInclude"이고 샘플이 xmlns:xi="http://www.w3.org/2003/XInclude" 인 경우 XSLT와 XML에서 동일한 네임 스페이스를 사용해야합니다. 더 나은 오류 메시지가 나타나면 Firefox가 XSLT 1.0 프로세서를 사용하고 버전 = "2.0"속성과 호환되는 처리를 전달하도록 전환되므로 XSLT에서 version="1.0"을 사용하는 것이 좋습니다.

+0

+1 : 마틴은 이미 답변을 제공 한 게시물에서 질문을 찾으려고 노력하는 동안! –