如何从XML文件创建下拉列表?

时间:2011-05-01 21:18:46

标签: javascript html xml drop-down-menu

我被告知HTML有可能使用......

 <select> element with <option children>

并且为了获得使用此代码的属性的值,可以使用...

elementNode.attributes.item(0).nodeValue

这是我需要从...中提取国家和费率的XML文件格式。

<?xml version="1.0" encoding="utf-8" ?>
<exchangeRates>
<rate country="aud" >0.97</rate>
<rate country="usd" >1.01</rate>
</exchangeRates>

我需要下拉列表来显示国家/地区以及与此类似的费率..

aud    0.97
usd    1.01

我真的很挣扎。我试过在asp.net中做,但是下拉列表只会显示一个值(aud,usd)。

一旦列表正常工作,我需要默认说“当前费率”,并且在显示列表时不再显示。也是tabindex 1或2,因此默认情况下不会选中它。

任何帮助/提示非常感谢!!

1 个答案:

答案 0 :(得分:0)

您可以使用XSLT将XML转换为HTML下拉列表。 这是javascript:

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("rates.xml");
xsl=loadXMLDoc("dropdown.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);

其中rates.xml是您的xml文件,如上所述。

其中dropdown.xsl是你的xsl转换文件:          

  <select>
      <xsl:for-each select="exchangeRates/rate">
     <option><xsl:value-of select="@country" />&nbsp;&nbsp;<xsl:value-of select="." /></option>
      </xsl:for-each>
 </select

</xsl:template>
</xsl:stylesheet>