2014-10-20 58 views
0

我試圖設計一個使用xinclude包含其他xml文件以實現模塊化目的的XML文檔。 我使用Firefox作爲我的工具來可視化轉換。 (所有文件都在同一個文件夾) 在我已經由下面的xsl時刻:使用XSL設計具有多個XInclude的XML樣式

<?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:

<?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> 

我知道,在計算器一些職位要求類似問題,但我目前無法解決這個問題。 在此先感謝。

回答

1

您的XSLT有xmlns:xi="http://www.w3.org/2001/XInclude",但您的示例有xmlns:xi="http://www.w3.org/2003/XInclude",您需要在XSLT和XML中使用相同的命名空間。爲了獲得更好的錯誤消息,我建議在XSLT中使用version="1.0",因爲Firefox使用XSLT 1.0處理器,並切換爲使用version =「2.0」屬性轉發兼容處理。

+0

+1:雖然我仍然試圖找到在帖子中的問題馬丁已經提供了答案! – 2014-10-20 12:37:29