我的問題是當我使用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能處理方式相當完美
@savruk:唯一的解決方法是通過文檔作爲參數。 – 2011-03-15 13:47:52
@Ajjandro我可以在這個參數上應用xpath嗎?因爲我從JavaScript傳遞文檔。並讓我說當我使用'xsl:value-of select =「$ xsdfile」'時,它顯示xsd文件的內容。但是我不能在它上面應用xpath,像 '$ xsdfile/xs:schema/child :: *' – savruk 2011-03-15 14:45:24
@savruk:如果是這種情況,那麼你沒有傳遞一個節點集參數。也許一個字符串?檢查您的XSLT處理器文檔以瞭解如何將節點集作爲參數傳遞。 – 2011-03-15 14:50:05