Thread: [xmljs-users] Re-ordering XML data...
Brought to you by:
djoham,
witchhunter
From: Eljon G. <eg...@re...> - 2005-02-04 22:25:27
|
Hi, This is my last hurdle to overcome (I think) in using XML and the xmlJS lib= rary. I use this technology to allow users to control the layout (order, a= ctive/inactive, labeling) of pages in our application. However the orderin= g is based on an <orderNumber> element I created by it does not change the = "position" of the <section> in the XML file. My question is there a way to= re-order elements? I can only display the elements by using the XPath pos= ition() function. Here is the way it works now and the desired result: How it looks now: <section> <id>1</id> <name>My Section</name> <orderNumber>02</orderNumber> <active>Yes</active> <locked>Yes</locked> </section> <section> <id>2</id> <name>My Other Section</name> <orderNumber>01</orderNumber> <active>Yes</active> <locked>Yes</locked> </section> The desired results: <section> <id>2</id> <name>My Other Section</name> <orderNumber>01</orderNumber> <active>Yes</active> <locked>Yes</locked> </section> <section> <id>1</id> <name>My Section</name> <orderNumber>02</orderNumber> <active>Yes</active> <locked>Yes</locked> </section> Thanks. Eljon Greene CE Software Engineer 877.394.5644 \\ main 904.567.2127 \\ direct eg...@re... www.recruitmax.com |
From: David J. <dj...@ya...> - 2005-02-04 22:53:11
|
Can you do a quick example (just the XML below and how you're trying to manipulate it) so I can take a look this weekend? I know the XPATH stuff in xmljs is pretty basic and probably doesn't support what you're looking for, but it may be possible to enhance it to support what you're looking for. At the very least, it should be easy to create a function that will reorder a nodelist in whatever way you're looking for... David --- Eljon Greene <eg...@re...> wrote: > Hi, > > This is my last hurdle to overcome (I think) in using XML and the xmlJS library. I use this > technology to allow users to control the layout (order, active/inactive, labeling) of pages in > our application. However the ordering is based on an <orderNumber> element I created by it does > not change the "position" of the <section> in the XML file. My question is there a way to > re-order elements? I can only display the elements by using the XPath position() function. > Here is the way it works now and the desired result: > > How it looks now: > > > <section> > <id>1</id> > <name>My Section</name> > <orderNumber>02</orderNumber> > <active>Yes</active> > <locked>Yes</locked> > </section> > <section> > <id>2</id> > <name>My Other Section</name> > <orderNumber>01</orderNumber> > <active>Yes</active> > <locked>Yes</locked> > </section> > The desired results: > > <section> > <id>2</id> > <name>My Other Section</name> > <orderNumber>01</orderNumber> > <active>Yes</active> > <locked>Yes</locked> > </section> > <section> > <id>1</id> > <name>My Section</name> > <orderNumber>02</orderNumber> > <active>Yes</active> > <locked>Yes</locked> > </section> > > Thanks. > > Eljon Greene > CE Software Engineer > 877.394.5644 \\ main > 904.567.2127 \\ direct > eg...@re... > www.recruitmax.com > |
From: Eljon G. <eg...@re...> - 2005-02-04 23:44:20
|
In the example below, the function would be moveSectionUp() or moveSectionD= own(). Those functions call updateNode(), which is I function I wrote to f= ind the node and use tNode.getFirstChild().setNodeValue(tValue), which actu= ally resets the order of the section. I think your idea of re-ordering the= nodelist is something I had not considered but should be possible once I t= hink it out....Thanks for the inspiration... So far i have come up with....This function would be called right before I = save the XML object to the hidden form field. function reOrderNodes(){ // Re-order the nodes so that the XML document accurately reflects the cha= nges made var tSections =3D pageRoot.getElementsByTagName(sectionElement); // secti= onElement =3D 'section' var tTempObj =3D null; // used to temporary swap nodes var i =3D 0; =20 // First do sections tCurrentSection =3D pageRoot.getElementsByTagName(sectionElement).item(i)= ; tCurrentSectionOrder =3D tCurrentSection.getElementsByTagName(orderElemen= t).item(i); // orderElement =3D 'orderNumber' =20 while(tCurrentSection.getNextSibling() !=3D null) { =20 tNextSection =3D pageRoot.getElementsByTagName(sectionElement).item(i+1)= ; tNextSectionOrder =3D tNextSection.getElementsByTagName(orderElement).it= em(0); =20 // if current section order is greater than next section swap if(tCurrentSectionOrder.getFirstChild().getNodeValue() > tNextSectionOrd= er.getFirstChild().getNodeValue()) { tTempObj =3D tCurrentSection; tCurrentSection =3D tNextSection; tNextSection =3D tTempObj; } else { break; } =20 tCurrentSection =3D pageRoot.getElementsByTagName(sectionElement).item(i= ); i++; } }=20 Let me know if I am now in the right direction...Thanks... P.S. I had plans to work alittle this weekend on this but I might not...Su= per Bowl is in town...Party on!!!!!!!!!!!!! Eljon Greene CE Software Engineer 877.394.5644 \\ main 904.567.2127 \\ direct eg...@re... www.recruitmax.com From: David Joham Sent: Fri 2/4/2005 5:53 PM To: Eljon Greene; xml...@li... Subject: Re: [xmljs-users] Re-ordering XML data... Can you do a quick example (just the XML below and how you're trying to man= ipulate it) so I can take a look this weekend? I know the XPATH stuff in xmljs is pretty basic a= nd probably doesn't support what you're looking for, but it may be possible to enhance it to su= pport what you're looking for. At the very least, it should be easy to create a function that= will reorder a nodelist in whatever way you're looking for... David --- Eljon Greene <eg...@re...> wrote: > Hi, >=20 > This is my last hurdle to overcome (I think) in using XML and the xmlJS l= ibrary. I use this > technology to allow users to control the layout (order, active/inactive, = labeling) of pages in > our application. However the ordering is based on an <orderNumber> eleme= nt I created by it does > not change the "position" of the <section> in the XML file. My question = is there a way to > re-order elements? I can only display the elements by using the XPath po= sition() function.=20 > Here is the way it works now and the desired result: >=20 > How it looks now: >=20 >=20 > <section> > <id>1</id> > <name>My Section</name> > <orderNumber>02</orderNumber> > <active>Yes</active> > <locked>Yes</locked> > </section> > <section> > <id>2</id> > <name>My Other Section</name> > <orderNumber>01</orderNumber> > <active>Yes</active> > <locked>Yes</locked> > </section> > The desired results: >=20 > <section> > <id>2</id> > <name>My Other Section</name> > <orderNumber>01</orderNumber> > <active>Yes</active> > <locked>Yes</locked> > </section> > <section> > <id>1</id> > <name>My Section</name> > <orderNumber>02</orderNumber> > <active>Yes</active> > <locked>Yes</locked> > </section> >=20 > Thanks. >=20 > Eljon Greene > CE Software Engineer > 877.394.5644 \\ main > 904.567.2127 \\ direct > eg...@re... > www.recruitmax.com >=20 |
From: David J. <dj...@ya...> - 2005-02-05 21:43:45
|
From what I gather you're trying to do, it looks like your going in the right direction... Good luck! David --- Eljon Greene <eg...@re...> wrote: > In the example below, the function would be moveSectionUp() or moveSectionDown(). Those > functions call updateNode(), which is I function I wrote to find the node and use > tNode.getFirstChild().setNodeValue(tValue), which actually resets the order of the section. I > think your idea of re-ordering the nodelist is something I had not considered but should be > possible once I think it out....Thanks for the inspiration... > > So far i have come up with....This function would be called right before I save the XML object > to the hidden form field. > > > function reOrderNodes(){ > // Re-order the nodes so that the XML document accurately reflects the changes made > var tSections = pageRoot.getElementsByTagName(sectionElement); // sectionElement = 'section' > var tTempObj = null; // used to temporary swap nodes > var i = 0; > > // First do sections > tCurrentSection = pageRoot.getElementsByTagName(sectionElement).item(i); > tCurrentSectionOrder = tCurrentSection.getElementsByTagName(orderElement).item(i); // > orderElement = 'orderNumber' > > while(tCurrentSection.getNextSibling() != null) { > > tNextSection = pageRoot.getElementsByTagName(sectionElement).item(i+1); > tNextSectionOrder = tNextSection.getElementsByTagName(orderElement).item(0); > > // if current section order is greater than next section swap > if(tCurrentSectionOrder.getFirstChild().getNodeValue() > > tNextSectionOrder.getFirstChild().getNodeValue()) { > tTempObj = tCurrentSection; > tCurrentSection = tNextSection; > tNextSection = tTempObj; > } else { > break; > } > > tCurrentSection = pageRoot.getElementsByTagName(sectionElement).item(i); > i++; > } > } > > Let me know if I am now in the right direction...Thanks... > > P.S. I had plans to work alittle this weekend on this but I might not...Super Bowl is in > town...Party on!!!!!!!!!!!!! > > Eljon Greene > CE Software Engineer > 877.394.5644 \\ main > 904.567.2127 \\ direct > eg...@re... > www.recruitmax.com > > > > > From: David Joham > Sent: Fri 2/4/2005 5:53 PM > To: Eljon Greene; xml...@li... > Subject: Re: [xmljs-users] Re-ordering XML data... > > > Can you do a quick example (just the XML below and how you're trying to manipulate it) so I can > take a look this weekend? I know the XPATH stuff in xmljs is pretty basic and probably doesn't > support what you're looking for, but it may be possible to enhance it to support what you're > looking for. At the very least, it should be easy to create a function that will reorder a > nodelist in whatever way you're looking for... > > David > > --- Eljon Greene <eg...@re...> wrote: > > > Hi, > > > > This is my last hurdle to overcome (I think) in using XML and the xmlJS library. I use this > > technology to allow users to control the layout (order, active/inactive, labeling) of pages in > > our application. However the ordering is based on an <orderNumber> element I created by it > does > > not change the "position" of the <section> in the XML file. My question is there a way to > > re-order elements? I can only display the elements by using the XPath position() function. > > Here is the way it works now and the desired result: > > > > How it looks now: > > > > > > <section> > > <id>1</id> > > <name>My Section</name> > > <orderNumber>02</orderNumber> > > <active>Yes</active> > > <locked>Yes</locked> > > </section> > > <section> > > <id>2</id> > > <name>My Other Section</name> > > <orderNumber>01</orderNumber> > > <active>Yes</active> > > <locked>Yes</locked> > > </section> > > The desired results: > > > > <section> > > <id>2</id> > > <name>My Other Section</name> > > <orderNumber>01</orderNumber> > > <active>Yes</active> > > <locked>Yes</locked> > > </section> > > <section> > > <id>1</id> > > <name>My Section</name> > > <orderNumber>02</orderNumber> > > <active>Yes</active> > > <locked>Yes</locked> > > </section> > > > > Thanks. > > > > Eljon Greene > > CE Software Engineer > > 877.394.5644 \\ main > > 904.567.2127 \\ direct > > eg...@re... > > www.recruitmax.com > > > |