社区
XML/XSL
帖子详情
数据岛问题,高手请进
colee
2003-10-09 05:35:43
我想应用Data Island,
让一个<select>里的选择值,对应xml文件里的某节点
...全文
31
8
打赏
收藏
数据岛问题,高手请进
我想应用Data Island, 让一个里的选择值,对应xml文件里的某节点
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
liudong963
2003-10-11
打赏
举报
回复
借助moonpiazza(月下小生) 的例子给你改编,这个应该是你所要的了,不过不完美的地方就是更新select的时候,感觉select的闪烁,但愿还有更好的办法实现:
<body>
<xml id="XMLData">
<country>
<province text="Jiang Su" value="值 Jiang Su">
<city text="Nan Jing" value="值 Nan Jing">
<street text="Xin Jie Kou" value="值 Xin Jie Kou"/>
<street text="Dong Jia Xiang" value="值 Dong Jia Xiang"/>
</city>
<city text="Su Zhou" value="值 Su Zhou">
<street text="Guan Qian Jie" value="值 Guan Qian Jie" />
<street text="Re Min Lu" value="值 Re Min Lu" />
</city>
</province>
<province text="Beijing" value="值 Beijing">
<city text="Beijing" value="值 Beijing">
<street text="Xin Jie Kou" value="值 Xin Jie Kou" />
<street text="Si Huan Lu" value="值 Si Huan Lu" />
<street text="Xue Yuan Lu" value="值 Xue Yuan Lu" />
</city>
</province>
<province text="Hei Bei" value="值 Hei Bei">
<city text="Shi Jia Zhuang" value="值 Shi Jia Zhuang">
<street text="Ren Min Lu" value="值 Ren Min Lu" />
</city>
</province>
</country>
</xml>
<xml id="xslDom" src="1.xsl"></xml>
<table width = 80% border=1>
<tr>
<td width = 50% align = center>
请选择省份:
</td>
<td width = 50% align = center>
<select name=province style="width:120px"></select>
</td>
</tr>
<tr>
<td width = 50% align = center>
请选择城市:
</td>
<td width = 50% align = center>
<select name=city style="width:120px"></select>
</td>
</tr>
<tr>
<td width = 50% align = center>
请选择街道:
</td>
<td width = 50% align = center>
<select name=street style="width:120px"></select>
</td>
</tr>
</table>
</body>
<SCRIPT LANGUAGE="JavaScript">
<!--
function changeItem(obj)
{
var xmlobj=document.all.XMLData.XMLDocument;
var xslobj=document.all.xslDom.XMLDocument;
if (!xmlobj||!xslobj) return;
var name,value;
if (!obj)
{
name="province";
value="country/province";
}
else
{
name=obj.name;
value=obj.value;
if (name=="province")
{
value="country/province[@value = '"+value+"']/city";
name="city";
}
else if(name=="city")
{
value="country/province[@value = '"+document.all.item("province").value+"']/city[@value = '"+value+"']/street";
name="street";
}
else
{
return;
}
}
var SOBJ=xslobj.selectSingleNode("//select");
if(!SOBJ) return;
//设置name属性
var temp=SOBJ.selectSingleNode("./@name");
if(!temp)
{
temp=xslobj.createAttribute("name");
SOBJ.setAttributeNode(temp);
}
temp.nodeTypedValue=name;
//设置onchange属性
temp=SOBJ.selectSingleNode("./@onchange");
if(!temp)
{
temp=xslobj.createAttribute("onchange");
SOBJ.setAttributeNode(temp);
}
if(name=="province"||name=="city")
temp.nodeTypedValue="changeItem(this)";
else
temp.nodeTypedValue="";
var ForOBJ=SOBJ.selectSingleNode("xsl:for-each/@select");
if(!ForOBJ) return;
ForOBJ.nodeTypedValue=value;
document.all.item(name).outerHTML=xmlobj.transformNode(xslobj);
//采用递归算法实现级联
if(name=="province"||name=="city")
changeItem(document.all.item(name));
}
//初始化
changeItem(null);
//-->
</SCRIPT>
------------------- 1.xsl -------------------
<?xml version="1.0" encoding="GB2312" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<select onchange="changeItem(this)" style="width:120px">
<xsl:for-each select="country/province">
<xsl:apply-templates select="." />
</xsl:for-each>
</select>
</xsl:template>
<xsl:template match="province|city|street">
<option>
<xsl:attribute name="value"><xsl:value-of select="@value"/></xsl:attribute>
<xsl:value-of select="@text"/>
</option>
</xsl:template>
</xsl:stylesheet>
xjwxiong
2003-10-10
打赏
举报
回复
可參考這個例子:
<OBJECT classid="clsid:550dda30-0541-11d2-9ca9-0060b0ec3d39"
ID="xmlData" HEIGHT=0 WIDTH=0>
</OBJECT>
<HTML>
<HEAD>
<TITLE>瀏覽XML文件的內容</TITLE>
<SCRIPT Language="JavaScript">
function loadXML()
{
//載入XML的文件
var xmldoc=xmlData.XMLDocument;
xmldoc.load("ch6-4.xml");
}
</SCRIPT>
</HEAD>
<BODY onload="loadXML()">
<CENTER>
<H2>瀏覽XML文件的內容</H2>
<HR>
<Table id=tblbooks datasrc="#xmlData" DATAPAGESIZE=3 border=1>
<Thead>
<TR>
<TD>書號</TD>
<TD>書名</TD>
<TD>作者</TD>
<TD>定價</TD>
</TR>
</THEAD>
<TBODY>
<TR>
<TD><DIV datafld="code"></DIV></TD>
<TD><DIV datafld="title"></DIV></TD>
<TD>
<TABLE Datasrc="#xmlData" datafld="authorlist">
<TR><TD><DIV datafld="author"></DIV></TD></TR>
</TABLE>
</TD>
<TD><DIV datafld="price"></DIV></TD>
</TR>
</TBODY>
</TABLE>
<HR>
<Input type="button" onclick="tblbooks.previousPage()" value="上一頁">
<Input type="button" onclick="tblbooks.nextPage()" value="下一頁">
每一頁<input type=Text value="3" size="5" onblur="tblbooks.dataPageSize=this.value;">
</Center>
</BODY>
</HTML>
孟子E章
2003-10-10
打赏
举报
回复
参考
http://msdn.microsoft.com/workshop/author/databind/dataconsumer.asp
孟子E章
2003-10-10
打赏
举报
回复
select只能绑定seleted值,用楼上的方法。
HONGDUN
2003-10-10
打赏
举报
回复
如果用“<TABLE Datasrc="#xmlData" datafld="authorlist">,难道不会一次性将数据绑定至客户端吗???
ssm1226
2003-10-10
打赏
举报
回复
数据绑定,无法实现你的意图
用js脚本或xsl
colee
2003-10-10
打赏
举报
回复
to moonpiazza(月下小生) :
你的东西不错,但好像不合我的问题,而且若有上千个选择项,速度不行;
有没有类似 “<TABLE Datasrc="#xmlData" datafld="authorlist"><TR><TD><DIV datafld="author"></DIV></TD></TR></TABLE>”这种方法将数据绑定到<select>呢 ?
请关注
to xjwxiong(xjw):
你好像有xmlHttp的教材,能不能给个网址?
月光易水
2003-10-09
打赏
举报
回复
多级联动菜单例子
<body onload="XMLRelatingSel(0);">
<xml id="XMLData">
<country>
<province text="Jiang Su" value="值 Jiang Su">
<city text="Nan Jing" value="值 Nan Jing">
<street text="Xin Jie Kou" value="值 Xin Jie Kou"/>
<street text="Dong Jia Xiang" value="值 Dong Jia Xiang"/>
</city>
<city text="Su Zhou" value="值 Su Zhou">
<street text="Guan Qian Jie" value="值 Guan Qian Jie" />
<street text="Re Min Lu" value="值 Re Min Lu" />
</city>
</province>
<province text="Beijing" value="值 Beijing">
<city text="Beijing" value="值 Beijing">
<street text="Xin Jie Kou" value="值 Xin Jie Kou" />
<street text="Si Huan Lu" value="值 Si Huan Lu" />
<street text="Xue Yuan Lu" value="值 Xue Yuan Lu" />
</city>
</province>
<province text="Hei Bei" value="值 Hei Bei">
<city text="Shi Jia Zhuang" value="值 Shi Jia Zhuang">
<street text="Ren Min Lu" value="值 Ren Min Lu" />
</city>
</province>
</country>
</xml>
<table width = 80% border=1>
<tr>
<td width = 50% align = center>
请选择省份:
</td>
<td width = 50% align = center>
<select name=province></select>
</td>
</tr>
<tr>
<td width = 50% align = center>
请选择城市:
</td>
<td width = 50% align = center>
<select name=city></select>
</td>
</tr>
<tr>
<td width = 50% align = center>
请选择街道:
</td>
<td width = 50% align = center>
<select name=street></select>
</td>
</tr>
</table>
</body>
<SCRIPT LANGUAGE="JavaScript">
<!--
var aSel=["province","city","street"];
function XMLRelatingSel(p_nSel)
{
var i;
var aTmpVal = new Array();
var nSel = p_nSel;
for(i=0; i<nSel; i++)
{
aTmpVal[i] = document.all(aSel[i]).options[document.all(aSel[i]).selectedIndex].value;
}
if(nSel == aSel.length)
{
var sSelVal = "";
for(i=0; i<nSel; i++)
{
sSelVal += aSel[i] + ": " + aTmpVal[i] + "\n";
}
alert(sSelVal);
return;
}
with(document.all(aSel[nSel]))
{
length = 0 ;
var oNode = XMLData.XMLDocument.childNodes[0];
for(i=0; i<nSel; i++)
{
oNode = oNode.selectSingleNode(aSel[i] + '[@value="' + aTmpVal[i] + '"]');
}
for(i=0; i<oNode.childNodes.length; i++)
{
length++ ;
options[(length-1)].text = oNode.childNodes[i].getAttribute("text");
options[(length-1)].value = oNode.childNodes[i].getAttribute("value");
}
onchange = new Function("XMLRelatingSel("+(nSel+1)+")");
onchange();
}
}
//-->
</SCRIPT>
:_)
驯龙
高手
中英文对白
这只是小小的校准
问题
But it... it's a mild calibration issue. 卡嗝 如果你想出去和龙战斗 Hiccup, if you ever want to get out there to fight dragons, 你就必须...
中国股市十大风云人物
是股市中真正的
高手
?谁才是证券市场中不败的剑客?是不是羽扇纶巾的股评家?是不是知识渊博的经济学者?还是那些脚踏实地在市场中搏杀,能够在风云变幻的市场中斩金夺银,能够无视行情的冷暖而在市场中屡屡获利的...
最强暴兵流
最强暴兵流 written by wl 前言 何谓
高手
何谓
高手
呢?其实有无穷多种答案。对于一个刚学星际的人来说,玩了3个月的人就算是
高手
了。但是对于yellow来说,可能只有boxer等少数几个人才能叫
高手
。我也给出一种...
1-10落败,5分钟崩盘!星际2职业
高手
史上首次被AI击溃,AlphaStar一战成名
简单交待一下相关信息,比赛在Catalyst地图上进行,这张地图中文名叫“汇龙
岛
”。 图上设置了很多隘口和高地,网友说,这张图群龙盘踞,大战一触即发,官方称“能创造出许多有意思的进攻路径和防守阵形”。 游戏版本...
python中的
数据
存储-json
程序都把用户提供的信息存储在列表和字典等
数据
结构中, 用户关闭程序时,你几乎总是要保存他们的信息: 一种简单的方式是使用模块json来存储
数据
(在python中使用json的时候,主要也就是使用json模块,json是以...
XML/XSL
8,906
社区成员
22,678
社区内容
发帖
与我相关
我的任务
XML/XSL
XML/XSL相关问题讨论专区
复制链接
扫一扫
分享
社区描述
XML/XSL相关问题讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章