yahoo place finder api ответ xml дисплей - PullRequest
1 голос
/ 12 января 2011

Я здесь пытаюсь работать с API поиска мест Yahoo.Я хочу получить широту и долготу конкретного места с указанием названия места.Когда я использую api place finder, я получаю текст ответа в xml, и я пытаюсь оформить его с помощью Xslt.

Моя проблема:

http://where.yahooapis.com/geocode?location=701+First+Ave,+Sunnyvale,+CA&appid=myapiid

- это запрос get, где я получаю xmlОтвет, который я должен оформить с помощью xslt и отображения.

У меня есть код, который делает это. Я считаю, что это правильно. Я всегда получаю пустую страницу

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

function displayResult()
{
xml=loadXMLDoc("http://where.yahooapis.com/geocode?location=701+First+Ave,+Sunnyvale,+CA&appid=MYAPIKEY");
xsl=loadXMLDoc("latitude.xsl");
// 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>

Вот мойТаблица стилей 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="Result/latitude"/></td>
      <td><xsl:value-of select="Result/longitute"/></td>
    </tr>
  </table>
  </body>
  </html>
</xsl:template>

</xsl:stylesheet>

Обновление по ссылке: ответ Yahoo

<?xml version="1.0" encoding="UTF-8"?>
<ResultSet version="1.0">
    <Error>0</Error>
    <ErrorMessage>No error</ErrorMessage>
    <Locale>us_US</Locale>
    <Quality>87</Quality>
    <Found>1</Found>
    <Result>
        <quality>87</quality>
        <latitude>37.416275</latitude>
        <longitude>-122.025092</longitude>
        <offsetlat>37.416397</offsetlat>
        <offsetlon>-122.025055</offsetlon>
        <radius>500</radius>
        <name></name>
        <line1>701 1st Ave</line1>
        <line2>Sunnyvale, CA  94089-1019</line2>
        <line3></line3>
        <line4>United States</line4>
        <house>701</house>
        <street>1st Ave</street>
        <xstreet></xstreet>
        <unittype></unittype>
        <unit></unit>
        <postal>94089-1019</postal>
        <neighborhood></neighborhood>
        <city>Sunnyvale</city>
        <county>Santa Clara County</county>
        <state>California</state>
        <country>United States</country>
        <countrycode>US</countrycode>
        <statecode>CA</statecode>
        <countycode></countycode>
        <uzip>94089</uzip>
        <hash>DDAD1896CC0CDC41</hash>
        <woeid>12797150</woeid>
        <woetype>11</woetype>
    </Result>
</ResultSet>
<!-- gws30.maps.re3.yahoo.com uncompressed/chunked Wed Jan 12 16:29:58 PST 2011 -->

Ответы [ 2 ]

2 голосов
/ 12 января 2011

Бобби,

Ваша таблица стилей будет всегда выводить некоторый HTML, по крайней мере, таблицу, даже если введенный XML неверен или отсутствует.Если вы даже не получаете таблицу, то проблема не в том, что входной XML неверен или отсутствует;скорее, что-то не так с загрузкой или применением таблицы стилей XSLT.Убедитесь, что URL к таблице стилей правильный.У вас есть относительный URL ("latitude.xsl"), поэтому убедитесь, что таблица стилей доступна по URL "latitude.xsl" относительно URL страницы, к которой вы обращаетесь (не страницы yahooapis).

Вы также можете попробовать тест / предупреждение после xsl=loadXMLDoc("latitude.xsl");, чтобы убедиться, что таблица стилей загружена.

(Кроме того, в вашей таблице стилей неправильно написано 'longitude', но эта проблема не будет отображаться, пока вы незагрузка таблицы стилей успешно.)

0 голосов
/ 13 января 2011

С источником входного сигнала ясно, что вам нужно изменить шаблон с

<xsl:template match="/">

К

<xsl:template match="/ResultSet"> 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...