我將在前言中說明我是一名業餘愛好者,當談到web dev。如何以可視方式格式化遠程服務器XML查詢響應?
我有一個Web應用發出的查詢字符串,如時提供XML數據:
https://example.com/api/reporting.ns?username=name&password=password&generate_report=SupportSession&start_date=2009-04-01&duration=0&limit=all
我創建了一個簡單的形式,它允許用戶修改此查詢的值,並有相應的XML返回。這裏是一個形式:
<form id= "report" action="https://example.com/api/reporting.ns?" name="report">
Username: <input name="username"><br />
Password: <input type="password" name="password"><br />
<input type="hidden" name="generate_report" value="SupportSession">
Start Date: <input name="start_date">
<input type="hidden" name="duration" value="0">
<input type="hidden" name="limit" value="all">
<input type="submit" value="Show Report">
我一直沒能做到的是格式化該XML響應,所以它看起來很漂亮。
我已經創建了一個很好的格式化XML的XSLT,並使用JavaScript來變換使用這樣的XSLT的XML:
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("Report.xml");
xsl=loadXMLDoc("Report.xsl");
// code for IE
if (window.ActiveXObject)
{
ex=xml.transformNode(xsl);
document.getElementById("content").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("content").appendChild(resultDocument);
}
}
是本地工作,但我跑起來反對跨域安全問題,因爲網絡設備硬化,我無法在其上放置任何代碼。
我一直在尋找這個網站和Web幾天尋找做到這一點使用其他手段的方法[ASP?],並已基本上是不成功的。這主要是因爲我不知道asp,所以我不知道如何去攻擊它。
我覺得在一個形式創建查詢字符串,然後加載從網絡設備到字符串生成的XML響應和應用駐留在服務器它的XSLT可能是一個選項,但一直沒能進行這行得通;因爲我不確定自己在做什麼。
這裏是我的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="/">
<div class="contentBox"> -->
<h2>Sessions</h2>
<table class="wide grid padding">
<thead>
<tr>
<th>Session ID</th>
<th>Started</th>
<th>Duration</th>
<th>Public Site</th>
<th>CTS Ticket Number</th>
<th>Customer's Name</th>
<th>Customer's Operating System</th>
<th>Representative's Name</th>
<th>Chat Transcript Download</th>
</tr>
</thead>
<xsl:for-each select="session_list/session">
<xsl:if test="customer_list/customer/os='Windows® (x86) Click-To-Chat'">
<tr>
<td><xsl:value-of select="@lsid"/></td>
<td><xsl:value-of select="start_time"/></td>
<td><xsl:value-of select="duration"/></td>
<td><xsl:value-of select="public_site"/></td>
<td><xsl:value-of select="external_key"/></td>
<td><xsl:value-of select="primary_customer"/></td>
<td><xsl:value-of select="customer_list/customer/os"/></td>
<td><xsl:value-of select="primary_rep"/></td>
<td><a target="_blank" href="{session_chat_download_url}">Download Chat</a></td>
</tr>
</xsl:if>
</xsl:for-each>
</table>
</xsl:template>
</xsl:stylesheet>
和XML的片段在網絡設備輸出:
<?xml version="1.0" encoding="UTF-8"?>
<session_list xmlns="http://www.networkstreaming.com/namespaces/API" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<session lsid="fef672741e025ffda1acb3041f09252d">
<session_type>support</session_type>
<lseq>2899</lseq>
<start_time timestamp="1290027608">2010-11-17T16:00:08-05:00</start_time>
<end_time timestamp="1290027616">2010-11-17T16:00:16-05:00</end_time>
<duration>00:00:08</duration>
<public_site id="1">Default</public_site>
<external_key></external_key>
<session_chat_view_url>https://mysite.com/session_download.ns?lsid=l%3Dfef672741e025ffda1acb3041f09252d%3Bh%3D9bd6081f0b7fee08dcc32a58ef4cb54c7a0e233d%3Bt%3Dsd%3Bm%3Dchat&dl_action=chat&view=1&sessionType=sd</session_chat_view_url>
<session_chat_download_url>https://mysite.com/session_download.ns?lsid=l%3Dfef672741e025ffda1acb3041f09252d%3Bh%3D9bd6081f0b7fee08dcc32a58ef4cb54c7a0e233d%3Bt%3Dsd%3Bm%3Dchat&dl_action=chat&sessionType=sd</session_chat_download_url>
<file_transfer_count>0</file_transfer_count>
<primary_customer gsnumber="3">Smith, John</primary_customer>
<customer_list>
<customer gsnumber="3">
<username>Smith, John</username>
<public_ip>xxx.xxx.xxx.xxx</public_ip>
<private_ip>xxx.xxx.xxx.xxx</private_ip>
<hostname>DESKTOP</hostname>
<os>Windows 7 Enterprise x64 Edition (Build 7600)</os>
<primary_cust>1</primary_cust>
<info>
<name></name>
<company></company>
<company_code></company_code>
<issue></issue>
<details></details>
</info>
更多信息:
我在asp中找到了一種方法來檢索遠程xml,它適用於像http://example.com/file.xml
這樣的URL,但不適用於我的URL。也許是因爲它是一個查詢?我查看了編碼/封裝我的URL的方式,但沒有找到任何可行的方法。
http://asp101.com/samples/xmlxsl_remote.asp
任何幫助,您可以提供將不勝感激。
謝謝!