![]() |
![]() | ![]() | ![]() | Altova Mailing List Archives>Archive Index >microsoft.public.xsl Archive Home >Recent entries >Thread Prev - Re: Loop through children [Thread Next] Re: Loop through childrenTo: NULL Date: 3/29/2008 8:49:00 AM "tshad" <tshad@d...> wrote in message news:#lJnknRkIHA.4120@T...... > That worked really well. > > Why did you do the: > > <xsl:apply-templates select="FORMS/FORM/FIELDS/*"/> > > And then the: > > <xsl:template match="FIELDS/*"> > > Doesn't the select already get a node set that is already just the nodes > below the FIELDS tag? > > IF that was the case (which it may not be), couldn't you just have done: > > <xsl:template match="*"> > > Thanks, > > Tom > > "Martin Honnen" <mahotrash@y...> wrote in message > news:%230kiCFPkIHA.4480@T...... >> tshad wrote: >>> If I have the following xml: >>> >>> <?xml version="1.0" encoding="utf-8"?> >>> <REPORT VERSION="1.10" FILENUM="" DESCRIPTION="Form Utility XML: >>> 3/18/2008 12:27:13 PM" MAJORFORM="1004"> >>> <ORDER></ORDER> >>> <TRACKING></TRACKING> >>> <FORMS> >>> <FORM NUM="1" FORMCODE="1004" SECCODE="1" DESC="" MAJOR="True" > >>> <FIELDS> >>> <OTHERFILENUMBER>692</OTHERFILENUMBER> >>> <FNMA_FILENUMBER>693</FNMA_FILENUMBER> >>> <SUBPROPADDRESS>3</SUBPROPADDRESS> >>> </FIELDS> >>> <FORMPHOTOS></FORMPHOTOS> >>> <ATTACHMENTS></ATTACHMENTS> >>> </FORM> >>> </FORMS> >>> </REPORT> >>> >>> I have can have about 200 nodes under the <FIELDS> node. >>> >>> Each node has it's own name. >>> >>> What I am looking for is to build an style sheet that loops through the >>> children and creates a set of nodes that would look something like: >>> >>> <?xml version="1.0" encoding="utf-8"?> >>> <REPORT> >>> <form> >>> <sectionNumber>1</sectionNumber> >>> <primary>True</primary> >>> <formName>1004</formName> >>> <tagName>OTHERFILENUMBER</tagName> >>> <value>692</value> >>> <form> >>> <form> >>> <sectionNumber>1</sectionNumber> >>> <primary>True</primary> >>> <formName>1004</formName> >>> <tagName>FNMA_FILENUMBER</tagName> >>> <value>693</value> >>> <form> >>> <form> >>> <sectionNumber>1</sectionNumber> >>> <primary>True</primary> >>> <formName>1004</formName> >>> <tagName>SUBPROPADDRESS</tagName> >>> <value>SUBPROPADDRESS</value> >>> <form> >>> </REPORT> >> >> Here is a stylesheet that performs the transformation: >> >> <xsl:stylesheet >> xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >> version="1.0"> >> >> <xsl:output method="xml" indent="yes"/> >> >> <xsl:template match="REPORT"> >> <xsl:copy> >> <xsl:apply-templates select="FORMS/FORM/FIELDS/*"/> >> </xsl:copy> >> </xsl:template> >> >> <xsl:template match="FIELDS/*"> >> <form> >> <sectionNumber><xsl:value-of >> select="../../@SECCODE"/></sectionNumber> >> <primary>True</primary> >> <formName><xsl:value-of select="../../@FORMCODE"/></formName> >> <tagName><xsl:value-of select="name()"/></tagName> >> <value><xsl:value-of select="."/></value> >> </form> >> </xsl:template> >> >> </xsl:stylesheet> >> >> >> >> -- >> >> Martin Honnen --- MVP XML >> http://JavaScript.FAQTs.com/ > > No, because the template that that expression was in was matching REPORT, so the path must be relative to REPORT. -- Joe Fawcett (MVP - XML) http://joe.fawcett.name | ![]() | ![]() | ![]() |
| Company | Legal | Press | Partners | Careers | Sitemap | Contact Us | Altova Blog | |||||
|
