Hallo,
ich habe nun zu meinem Problem zu meinem Beitrag "Brauche Hilfe für Summenfunktion bei xsl" weiter unten im XSL Bereich eine Lösung gefunden. Nur habe ich eine Verständnisfrage, wie DOM Nodes speziell Childnodes interpretiert.
Folgender Sachverhalt:
<root>
<produkt1 schalter="003" set="test">13263</produkt1>
<produkt2 schalter="003" set="test">3284623</produkt1>
<!-- kommentar -->
<produkt3 schalter="002" set="test">1231231</produkt1>
<produkt1 schalter="001" set="test">236486</produkt1>
</root>
Ich setze/schreibe nun per ASP das Attribut "set" mit einem bestimmten Wert, der abhängig von dem Attribut "schalter" ist. die asp steht unten, mir geht es aber eher nur um die eine Schleife, die dafür sorgt, dass alle produkte durchsucht werden:
For Each objField In objRoot.childNodes
If objField.getAttribute ("schalter") = Request.Form.Key(x) Then
objField.setAttribute "set", Request.Form(x)
End If
Next
Diese Schleife funktioniert nicht, wenn ich in der XML einen Kommentar habe wie oben gezeigt. Wenn ich aber alle Kommentare aus der xml entfern, dann funktioniert die Schleife. Nun möchte ich aber gerne nicht auf die Kommentare verzichten, da diese schon sehr hilfreich sind. Kann mir das einer erklären??
hier die komplette asp und ersichtlich, dass ich als microsoft dom benutze.
<%
Function loadXMLFile(strXMLFile, strXSLFile)
Dim objXML
Dim objXSL
set objXML = Server.CreateObject("Microsoft.XMLDOM")
objXML.async = false
objXML.load(strXMLFile)
set objXSL = Server.CreateObject("Microsoft.XMLDOM")
objXSL.async = false
objXSL.load(strXSLFile)
Response.Write(objXML.transformNode(objXSL))
End Function
Function updateXML(strXMLFile)
Dim objDom
Dim objRoot
Dim objField
Dim child
Dim x
set objDOM = Server.CreateObject("Microsoft.XMLDOM")
objDOM.async = false
objDOM.load strXMLFile
Set objRoot = objDom.documentElement
For x = 1 to Request.Form.Count
If instr(1,Request.Form.Key(x),"btn") = 0 Then
For Each objField In objRoot.childNodes
If objField.getAttribute ("schalter") = Request.Form.Key(x) Then
objField.setAttribute "set", Request.Form(x)
End If
Next
End If
Next
objDom.save strXMLFile
Set objDom = Nothing
Set objRoot = Nothing
Set objField = Nothing
loadXMLFile strXMLFile,server.MapPath("produkt.xsl")
End Function
If Request.Form("btnSubmit") = "" Then
loadXMLFile server.MapPath("produkt.xml"), _
server.MapPath("produkt.xsl")
Else
updateXML server.MapPath("produkt.xml")
End If
%>