2011-01-12 8 views
0

Ich versuche hier mit yahoo ort finder api zu arbeiten. Ich möchte den Breiten- und Längengrad eines bestimmten Ortes geben Name des Ortes. Wenn ich Place Finder api verwende, bekomme ich den Antworttext in xml und versuche, ihn mit Xslt zu stylen.yahoo ort finder api antwort xml display

Mein Problem:

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

ist die GET-Anforderung, wo ich eine XML als Antwort bekommen, die ich mit xslt und Display-Stil haben.

ich habe einen Code hier, die nicht that.I glauben, dass es richtig .I ist immer eine leere Seite

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

Hier ist mein Stylesheet erhalten:

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

Update von Link: Yahoo Antwort

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

Es gibt keine Frage gestellt. Wenn die Frage ist, "ob es richtig oder falsch ist", immer eine leere Seite zu bekommen, denke ich, dass die Antwort ist: Es ist falsch. –

+0

Thnx ich habe die Frage bearbeitet.Ich glaube, es ist richtig.Ich brauche nur etwas Hilfe – simplyblue

Antwort

2

Bobby,

Ihr Stylesheet wird immer einige HTML ausgeben, zumindest eine Tabelle, auch wenn die Eingabe-XML falsch ist oder fehlt. Wenn Sie nicht einmal eine Tabelle erhalten, besteht das Problem nicht darin, dass die XML-Eingabe falsch ist oder fehlt. eher etwas stimmt nicht mit dem Laden oder Anwenden des XSLT Stylesheets. Stellen Sie sicher, dass die URL zum Stylesheet korrekt ist. Sie haben eine relative URL ("latitude.xsl"). Stellen Sie daher sicher, dass das Stylesheet unter der URL "latitude.xsl" relativ zur URL der Seite, auf die Sie zugreifen, zugreifbar ist (nicht die yahooapis-Seite).

Sie können auch einen Test/Alarm nach dem xsl=loadXMLDoc("latitude.xsl"); versuchen, um sicherzustellen, dass das Stylesheet geladen ist.

(auch ‚Länge‘ ist in Ihrem Stylesheet falsch geschrieben, aber das Problem wird nicht angezeigt, bis Sie das Stylesheet erfolgreich geladen werden.)

+0

Ich denke, meine relative URL ist korrekt.Ich habe sowohl die HTML-Datei und XSL-Stylesheet in einem gleichen Speicherort (ich habe sie auf meinem Desktop) .So Ich denke, es sollte richtig sein. Ich versuchte auch aufmerksam, aber ich wurde nicht wachsam. – simplyblue

+0

@bobby: Wenn Sie überhaupt keine Benachrichtigung erhalten, wird der entsprechende Codeabschnitt nicht ausgeführt. Bitte zeigen Sie den Code für Ihre Warnung an und teilen Sie mit, welchen Browser Sie verwenden. Eine andere Möglichkeit ist, dass Ihr Ajax-Aufruf fehlschlägt, sodass Ihre displayResult() - Funktion nicht aufgerufen wird. – LarsH

+0

Ich habe dies nach loadXMLDoc .. !!! xsl = loadXMLDoc ("Breitengrad.xsl"); Warnung ("erfolgreich"); Ich benutze firefox 3.6 – simplyblue

0

Mit der Eingangsquelle ist klar, dass Sie das Muster ändern müssen von

<xsl:template match="/"> 

Um

<xsl:template match="/ResultSet">