2011-03-15 41 views
0

我的問題是當我使用javascript做xslt處理時,WebKit無法處理xslt document()方法。當我在xml中包含xsl文件並從瀏覽器調用xml文件時,它可以工作。但是,當我使用JavaScript來處理這個過程時,它崩潰了。我必須使用JavaScript將參數傳遞給xsl文件。所以我不能沒有JavaScript。 這裏是html部分。xsl處理javascript中的document()方法問題

<html> 
<head> 
    <script language="javascript" src="./js/jquerymin.js"></script> 
    <script language="javascript" src="./js/jquery.transform.js"></script> 
<script> 

$(document).ready(function(){ 
    $("#example").transform({xml:"sample.xml", xsl:"sample.xsl", xslParams:{scan:'system',sub:'lan'}}); 
}); 
</script> 
</head> 
<body > 
<div id="example" ></div> 
</body> 
</html> 

這是基本的XSL文件,該文件與本辦法崩潰:

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet version="2.0" 
       xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
       xmlns:nsm="http://xxxxx.com/yyyyy/system" 
       xmlns:xs="http://www.w3.org/2001/XMLSchema"> 

<xsl:param name="scan" select="'system'"/> 
<xsl:param name="sub" select="'lan'"/> 

<xsl:output method="html"/> 

<xsl:template match="/"> 
     <xsl:variable name="xsdFile" select="document('sample.xsd')"/> 
     <xsl:for-each select="$xsdFile"> 
       ssss 
     </xsl:for-each> 
</xsl:template> 

</xsl:stylesheet> 

正如我說,雖然我讓JavaScript來做到transformation.But當我從瀏覽器中調用XML文件時,它的工作原理這是行不通的。

這是一個錯誤還是我想念這裏的東西?

感謝,

編輯:http://plugins.jquery.com/project/Transform這是jQuery插件我使用。順便說其他瀏覽器如Firefox和Opera能處理方式相當完美

+0

@savruk:唯一的解決方法是通過文檔作爲參數。 – 2011-03-15 13:47:52

+0

@Ajjandro我可以在這個參數上應用xpath嗎?因爲我從JavaScript傳遞文檔。並讓我說當我使用'xsl:value-of select =「$ xsdfile」'時,它顯示xsd文件的內容。但是我不能在它上面應用xpath,像 '$ xsdfile/xs:schema/child :: *' – savruk 2011-03-15 14:45:24

+0

@savruk:如果是這種情況,那麼你沒有傳遞一個節點集參數。也許一個字符串?檢查您的XSLT處理器文檔以瞭解如何將節點集作爲參數傳遞。 – 2011-03-15 14:50:05

回答

1

亞歷杭德羅,在XSLT工作document()你需要使用服務器端的轉換插件