Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xml xsltProcessor.importStylesheet错误_Xml_Ajax_Xslt - Fatal编程技术网

Xml xsltProcessor.importStylesheet错误

Xml xsltProcessor.importStylesheet错误,xml,ajax,xslt,Xml,Ajax,Xslt,我正在尝试处理以下代码,但在xsltProcessor.importStylesheet上遇到此错误 删除时出错:xhttp.send(null) 当我有时出错:xhttp.send(null) 我的html文件: <html> <head> <script> function loadXMLDoc(dname) { if (window.XMLHttpRequest) { xhttp=new XMLHttpRequest(); } else

我正在尝试处理以下代码,但在xsltProcessor.importStylesheet上遇到此错误

删除时出错:
xhttp.send(null)

当我有时出错:
xhttp.send(null)

我的html文件:

<html>
<head>
<script>
function loadXMLDoc(dname)
{
if (window.XMLHttpRequest)
  {
  xhttp=new XMLHttpRequest();
  }
else
  {
  xhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xhttp.open("GET",dname,false);

return xhttp.responseXML;
}

function displayResult()
{ 
xml=loadXMLDoc("http://maps.googleapis.com/maps/api/geocode/xml?address=1600+Amphitheatre+Parkway,+Mountain+View,+CA&sensor=false");
alert("successful call to xml");
xsl=loadXMLDoc("latitude.xsl");
alert("successful applying style sheet");
// code for IE
if (window.ActiveXObject)
  {
  ex=xml.transformNode(xsl);
  document.getElementById("example").innerHTML=ex;
  }
// code for Mozilla, Firefox, Opera, etc.
else if (document.implementation && document.implementation.createDocument)
  {
  xsltProcessor=new XSLTProcessor();
  xsltProcessor.importStylesheet(xsl);
  resultDocument = xsltProcessor.transformToFragment(xml,document);
  document.getElementById("example").appendChild(resultDocument);
  }
}
</script>
</head>
<body onload="displayResult()">
<div id="example" />
</body>
</html>

函数loadXMLDoc(dname)
{
if(window.XMLHttpRequest)
{
xhttp=newXMLHttpRequest();
}
其他的
{
xhttp=新的ActiveXObject(“Microsoft.XMLHTTP”);
}
xhttp.open(“GET”、dname、false);
返回xhttp.responseXML;
}
函数displayResult()
{ 
xml=loadXMLDoc(“http://maps.googleapis.com/maps/api/geocode/xml?address=1600+圆形剧场+公园道,+山景,+CA和传感器=假“;
警报(“成功调用xml”);
xsl=loadXMLDoc(“latitude.xsl”);
警报(“成功应用样式表”);
//IE代码
if(window.ActiveXObject)
{
ex=xml.transformNode(xsl);
document.getElementById(“示例”).innerHTML=ex;
}
//Mozilla、Firefox、Opera等的代码。
else if(document.implementation&&document.implementation.createDocument)
{
xsltProcessor=新的xsltProcessor();
导入样式表(xsl);
resultDocument=xsltProcessor.transformToFragment(xml,文档);
document.getElementById(“示例”).appendChild(resultDocument);
}
}
我的Xslt样式表(按要求):

<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/"> 
  <html>
  <body>
  <h2>Latitude Longitute finder</h2>
  <table border="1">
    <tr bgcolor="#9acd32">
      <th>Latitude</th>
      <th>Longitude</th>
    </tr>
    <tr>
      <td><xsl:value-of select="GeocodeResponse/result/geometry/location/lat"/></td>
      <td><xsl:value-of select="GeocodeResponse/result/geometry/location/lng"/></td>
<td><xsl:value-of select="GeocodeResponse/result/type"/></td>
<td><xsl:value-of select="GeocodeResponse/result/formatted_address"/></td>
<td><xsl:value-of select="GeocodeResponse/result/address_component/long_name"/></td>
<td><xsl:value-of select="GeocodeResponse/result/address_component/short_name"/></td>
    </tr>
  </table>
  </body>
  </html>
</xsl:template>

</xsl:stylesheet>

纬度经纬仪
纬度
经度

除非您的HTML文档和脚本托管在脚本上,否则由于浏览器中客户端代码的同源策略,不允许从该源加载带有XMLHttpRequest的文档。因此,如果您试图从中加载数据,我希望像Mozilla这样的浏览器在发送调用时抛出异常。
至于输入样式表上的错误,请考虑显示一个最小但完整的样式表,使我们能够重现错误。或者更好的做法是,首先通过XSLT 1.0处理器在浏览器外部运行样式表,这会提供更好的错误消息,我怀疑样式表中存在问题。

除非您的HTML文档和脚本托管在脚本上,否则不允许从该源加载带有XMLHttpRequest的文档,由于浏览器中的客户端代码采用了同源策略。因此,如果您试图从中加载数据,我希望像Mozilla这样的浏览器在发送调用时抛出异常。
至于输入样式表上的错误,请考虑显示一个最小但完整的样式表,使我们能够重现错误。或者更好的方法是,首先通过XSLT 1.0处理器在浏览器外部运行样式表,这样可以提供更好的错误消息,我怀疑样式表中存在问题。

Martin我已经在上面发布了我的xslt表。我的代码还有其他工作方式。我知道同源策略,但不确定。现在我不知道从哪里开始让代码工作。我应该使用服务器端脚本吗。我很困惑,就我所知,样式表很好,而且我在Firefox 3.6和importStylesheet中使用了本地副本,但没有出现错误。至于访问这些数据,实际上,您需要使用服务器端编程来加载XML数据,或者需要检查是否有任何Javascript API可以使用,因为doing
不受同源策略的约束。这是一个很好的发现!考虑到这是一个原始问题,因为这是一个复制我已经发布了我的XSLT表。HHI有其他方式让我的代码工作。我知道同样的原产地政策,但不确定。现在我不知道从哪里开始使我的代码工作。我应该使用服务器端脚本。我承认,样式表是好的。据我所知,我在Firefox 3.6和importStylesheet中使用了本地副本,没有出现错误。至于访问这些数据,实际上,您需要使用服务器端编程来加载XML数据,或者需要检查是否有任何Javascript API可以使用,因为doing
不受同源策略的约束。这是一个很好的发现!考虑发布这是原始问题,因为这是[雅虎Posiver API应答XML显示]的复制副本[(雅虎Looper-FieldAPI响应XML显示)的可能副本]
<html>
<head>
<script>
function loadXMLDoc(dname)
{
if (window.XMLHttpRequest)
  {
  xhttp=new XMLHttpRequest();
  }
else
  {
  xhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xhttp.open("GET",dname,false);

return xhttp.responseXML;
}

function displayResult()
{ 
xml=loadXMLDoc("http://maps.googleapis.com/maps/api/geocode/xml?address=1600+Amphitheatre+Parkway,+Mountain+View,+CA&sensor=false");
alert("successful call to xml");
xsl=loadXMLDoc("latitude.xsl");
alert("successful applying style sheet");
// code for IE
if (window.ActiveXObject)
  {
  ex=xml.transformNode(xsl);
  document.getElementById("example").innerHTML=ex;
  }
// code for Mozilla, Firefox, Opera, etc.
else if (document.implementation && document.implementation.createDocument)
  {
  xsltProcessor=new XSLTProcessor();
  xsltProcessor.importStylesheet(xsl);
  resultDocument = xsltProcessor.transformToFragment(xml,document);
  document.getElementById("example").appendChild(resultDocument);
  }
}
</script>
</head>
<body onload="displayResult()">
<div id="example" />
</body>
</html>
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/"> 
  <html>
  <body>
  <h2>Latitude Longitute finder</h2>
  <table border="1">
    <tr bgcolor="#9acd32">
      <th>Latitude</th>
      <th>Longitude</th>
    </tr>
    <tr>
      <td><xsl:value-of select="GeocodeResponse/result/geometry/location/lat"/></td>
      <td><xsl:value-of select="GeocodeResponse/result/geometry/location/lng"/></td>
<td><xsl:value-of select="GeocodeResponse/result/type"/></td>
<td><xsl:value-of select="GeocodeResponse/result/formatted_address"/></td>
<td><xsl:value-of select="GeocodeResponse/result/address_component/long_name"/></td>
<td><xsl:value-of select="GeocodeResponse/result/address_component/short_name"/></td>
    </tr>
  </table>
  </body>
  </html>
</xsl:template>

</xsl:stylesheet>