以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 XML源码及示例(仅原创和转载) 』  (http://bbs.xml.org.cn/list.asp?boardid=32)
----  [求助]如何确定我读取的xml数据是哪一条呢  (http://bbs.xml.org.cn/dispbbs.asp?boardid=32&rootid=&id=25355)


--  作者:springfeng
--  发布时间:12/13/2005 2:16:00 PM

--  [求助]如何确定我读取的xml数据是哪一条呢
我是新手,边抄边写边学,还是遇到了难题,希望高手指点

原文如下
<%
Public Function createDOMDocument()
      Dim objXML

      On Error Resume Next

      Set objXML = CreateObject("Msxml2.DOMDocument")
      objXML.async = False
      If Err.number = 0 Then
          Set createDOMDocument = objXML
      Else
          Set createDOMDocument = Nothing
      End If
  End Function
  
  
  
strXmlDataT1 = "<DATA><LIST></LIST></DATA>"

      set objXML = createDOMDocument()
     objXML.loadXML(strXmlDataT1)  
     set  objList = objXML.selectSingleNode("//LIST")

set Con =server.CreateObject ("adodb.connection")
Con.cursorlocation = 3

Con.Open("Driver={sql server};server=***;database=***;uid=sa;pwd=***")
sqlCustOrderInfo = "SELECT * FROM ***"
Set rslist = Server.CreateObject("ADODB.Recordset") 
rslist.Open sqlCustOrderInfo,Con

if rslist.recordcount > 0 then
set  objList = objXML.selectSingleNode("//LIST")
  while not rslist.eof   
    sus_name = trim(rslist("sus_name")) '代码
    sus_em_name = trim(rslist("sus_em_name")) '中文代码
    realname = ""  '真实姓名


    set xmlItem = createDOMDocument()
    strItem= "<ITEM></ITEM>"
    xmlItem.loadXML(strItem)
    set objRoot = xmlItem.documentElement
    set objItem = xmlItem.createElement("ITEM")
  
    objRoot.appendChild(objItem)
    objItem.setAttribute "sus_name",sus_name
    objItem.setAttribute "sus_em_name",sus_em_name
    objItem.setAttribute "realname",realname

    objList.appendChild(objItem)
    rslist.moveNext
  wend
end if
Con.close
set Con = nothing

'Response.ContentType = "text/xml"
'Response.CharSet="gb2312"
'response.write objXML.xml 'test

strXmlDataT1 = objXML.xml

%>
<html>
<META content=zh-cn http-equiv=Content-Language>
<META content="text/html; charset=gb2312" http-equiv=Content-Type>
<head>
<title>test</title>
<style type="text/css">
<xml id="xmlDataT1">
<%=strXmlDataT1%>
</xml>

<xml id="xslDataT1">
<?xml version="1.0" encoding="GB2312" ?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:v="urn:schemas-microsoft-com:vml" version="1.0">
  <xsl:output method="html" indent="yes"/>
  <!--匹配根節點-->
  <xsl:template match="LIST">
      <xsl:if test="count(./ITEM)>0">
<table width="600" border="1" align="center" cellpadding="2" cellspacing="0" bordercolor="#999999" class="thin">
           <tr class="Title" height="30">  
                    <td width="2"></td>
                    <td >代码sus_name</td>
     <td >中文代码sus_em_name</td>
     <td >真实姓名realname</td>
  </tr>
          <xsl:apply-templates select="ITEM"/>    
</table>      
      </xsl:if>
  </xsl:template>
  
<!--匹配ITEM節點-->
<xsl:template match="ITEM">
    <tr bgcolor="white"  height = "20"  >
                    <td align="center"><input type="radio" name="T1isChecked"   onclick="ShowSelect()"/></td>
                    <td class=""><xsl:value-of select="@sus_name"/> </td>
     <td class=""><xsl:value-of select="@sus_em_name"/> </td>
     <td class=""><xsl:value-of select="@realname"/></td>
    </tr>
  </xsl:template>
</xsl:stylesheet>
</xml>
</head>
<SCRIPT LANGUAGE="JavaScript">

function showlist()
{  
  divDataT1.innerHTML = xmlDataT1.transformNode(xslDataT1);  //定义的divDataT1区域中载入xslDataT1?
  //resetForm();  
}

function ShowSelect( ){
  //alert("454");
  //var iRowNo=getSelectItemT1();
  var iPos = getSelectItemT1();  //获得第几个节点
  //alert (iPos);
  var sus_name,sus_em_name
/*******************************
抄到这里,就不知道该如何继续了,下面是读取ITEM的属性,然后赋给sus和em两文本字段,但是我如何确定我读取的ITEM是哪一条呢?
iPos可以正确的获得
***************/
       sus_name = objItem.getAttribute("sus_name");
       sus_em_name =  objItem.getAttribute("sus_em_name");

  try
    {
        document.form1.sus.value=sus_name;
        document.form1.em.value= sus_em_name;
        
    }
  catch(e){};
}

function getSelectItemT1()
{
  var GiftAmount;
  GiftAmount = document.form1.T1isChecked.length;
  var i;
  for(i=0;i<GiftAmount;i++)
  {
    if(document.form1.T1isChecked[i].checked)
    {
     break;
    }
  }
  return i;
  //alert(GiftAmount);
}
</SCRIPT>
<body onload="showlist()">
<FORM name="form1" method="post" >
<table width="600" border="1" align="center" cellpadding="2" cellspacing="0" bordercolor="#999999" class="thin">
  <tr>
    <td>代码</td>
    <td>中文代码</td>
    <td>真实姓名</td>
  </tr>
  <tr>
    <td><input name="sus" type="text" id="sus" /></td>
    <td><input name="sus" type="text" id="em" /></td>
    <td><input name="sus" type="text" id="realname" /></td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
  </tr>

</table>


        <div id="divDataT1"> </div>
  </TD>          
        </TBODY></TABLE>
  
</form>
</body>
</html>


--  作者:springfeng
--  发布时间:12/13/2005 3:05:00 PM

--  
汗。。。搞定了
var NodeList =xmlDataT1.getElementsByTagName("ITEM");  
sus_name = NodeList(iPos).getAttribute("sus_name");
sus_em_name =  NodeList(iPos).getAttribute("sus_em_name");
  try
    {
        document.form1.sus.value=sus_name;
        document.form1.em.value= sus_em_name;
    }
W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
78.125ms