You do have to escape the [
This worked.
/configuration/Xenysys/Vals/[EMAIL PROTECTED]'value2'[\]]

Thank you very much for your help.

-----Original Message-----
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of Scott Sam
Sent: Friday, September 01, 2006 3:23 PM
To: Chesong Lee; wix-users@lists.sourceforge.net
Subject: Re: [WiX-users] Using XmlFile to update an existing attribute


/configuration/Xenysys/Vals/[EMAIL PROTECTED]'value2']
And
/configuration/Xenysys/Vals/add

Update the value in value1.  I don't understand why the first one
doesn't update value2 or give an error.  Does it just ignore everything
in brackets if they aren't escaped?


-----Original Message-----
From: Chesong Lee [mailto:[EMAIL PROTECTED] 
Sent: Thursday, August 31, 2006 6:13 PM
To: Scott Sam; wix-users@lists.sourceforge.net
Subject: RE: [WiX-users] Using XmlFile to update an existing attribute


I have to correct my statement. [] also can be an indexer. But it should
be used very carefully. It is much cleaner to see [] a predicate and
[position()=2] for example is better choice for such indexed location.
However, MSXML 3.0 does not support position() function as will be shown
below.

As MSXML 3.0 uses zero-based index, MSXML 4.0 and XML standard
(so-called in MSDN) uses 1-based index. .NET Framework library also
conforms XML standard. As I see the wix source dutil/xmlutil.cpp (if
this is the correct one), it uses MSXML 3.0 deliberately. Use of 4.0 may
lead other problems, though.

So, I would recommend you use a predicate like [EMAIL PROTECTED]'something2'] 
and
avoid numerical index for your cases.

Wix documentation may have to clarify that XmlUtil uses MSXML 3.0 the
users should use MSXML 3.0 specification.
 
Below show different behaviors in different versions of MSXML:

-----------------------
MSXML2.DOMDocument.3.0
-----------------------

XPath=/Configuration/companyname/vals/add/@value
 >>> value="value1"

XPath=/Configuration/companyname/vals/add[0]/@value
 >>> value="value1"

XPath=/Configuration/companyname/vals/add[1]/@value
 >>> value="valueIwanttoupdate"

XPath=/Configuration/companyname/vals/add[2]/@value
 >>> (null)

XPath=/Configuration/companyname/vals/add[position()=2]/@value
exception: Unknown method.

/Configuration/companyname/vals/add[-->position()<--=2]/@value

XPath=/Configuration/companyname/vals/[EMAIL PROTECTED]'something2']/@value
 >>> value="valueIwanttoupdate"



-----------------------
MSXML2.DOMDocument.4.0
-----------------------

XPath=/Configuration/companyname/vals/add/@value
 >>> value="value1"

XPath=/Configuration/companyname/vals/add[0]/@value
 >>> (null)

XPath=/Configuration/companyname/vals/add[1]/@value
 >>> value="value1"

XPath=/Configuration/companyname/vals/add[2]/@value
 >>> value="valueIwanttoupdate"

XPath=/Configuration/companyname/vals/add[position()=2]/@value
 >>> value="valueIwanttoupdate"

XPath=/Configuration/companyname/vals/[EMAIL PROTECTED]'something2']/@value
 >>> value="valueIwanttoupdate"

-----------------------
XML in .NET Framework
-----------------------

XPath=/Configuration/companyname/vals/add/@value
 >>> value1
XPath=/Configuration/companyname/vals/add[0]/@value
 >>> (null)
XPath=/Configuration/companyname/vals/add[1]/@value
 >>> value1
XPath=/Configuration/companyname/vals/add[2]/@value
 >>> valueIwanttoupdate
XPath=/Configuration/companyname/vals/add[position()=2]/@value
 >>> valueIwanttoupdate
XPath=/Configuration/companyname/vals/[EMAIL PROTECTED]'something2']/@value
 >>> valueIwanttoupdate



Chesong Lee

-----Original Message-----
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of Chesong
Lee
Sent: Thursday, August 31, 2006 5:22 PM
To: Scott Sam; wix-users@lists.sourceforge.net
Subject: Re: [WiX-users] Using XmlFile to update an existing attribute

Isn't it possible to use the xpath like this?
[] in XPath is not a numerical index but node test predicate.
 
/Configuration/companyname/vals/[EMAIL PROTECTED]'something2']/@value

-----Original Message-----
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of Scott Sam
Sent: Thursday, August 31, 2006 4:51 PM
To: wix-users@lists.sourceforge.net
Subject: [WiX-users] Using XmlFile to update an existing attribute

I'm trying to set the value of an attribute to the machine name.  this
is a snippet of the xml file.

<Configuration>
.
.
.
<companyname>
<vals>
<add name="something" value="value1" />
<add name="something2" value="valueIwanttoupdate" />
</vals>
</companyname>
</Configuration>

When I use the //Configuration/Companyname[1]/vals[1]/add[2] for the
ElementPath it updates value1 no matter what add I reference.

Any ideas why this happens?  How can I update the value attribute of the
2nd add element in the group.  I don't want to create a new element,
because all the elements already exist along with all of their
attributes.


------------------------------------------------------------------------
-
Using Tomcat but need to do more? Need to support web services,
security?
Get stuff done quickly with pre-integrated technology to make your job
easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache
Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users

------------------------------------------------------------------------
-
Using Tomcat but need to do more? Need to support web services,
security?
Get stuff done quickly with pre-integrated technology to make your job
easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache
Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users



------------------------------------------------------------------------
-
Using Tomcat but need to do more? Need to support web services,
security?
Get stuff done quickly with pre-integrated technology to make your job
easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache
Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users



-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users

Reply via email to