xsl-list
[Top] [All Lists]

[xsl] total newbie

2009-06-11 14:28:46

Hello

I am very new to xml and xsl.  I have what is probably the simplist of simple.  
I have a xml file sent to me from a customer.  When I open it in excel it gives 
me a at least 1 line for every PO or more lines if there are 2 or more 
PO lines.  So If there are 5 POs and 2 of those have 3 PO lines, excel will 
show 9 records.  I need fields from the POHeader, POLIne, and ShipTo sections.  
Where there is more than 1 POLine, any header or ship to info I have is just 
repeated in those rows by excel, which is what I want.  My xsl code that I have 
messes up when I have a PO with more than 1 POLine.  It adds up the info from 
both lines and puts them in the same node. Here is the xml.  There are a ton 
more fields than I am showing.  I just need a handful of them.


<EntireOrder>
    <PO>
        <POHeader>
            </SomeHeaderInfo1>
            </SomeHeaderInfo2>
        </POHeader>
        <POLine>
            <Line1>
            </SomeLineInfo2>
            </ShipTo>
                </ShipInfo1>
            </ShipTo>
        </POLine>
        <POLine>
            <Line2>
            </SomeLineInfo2>
            <ShipTo>
                </ShipInfo1>
            </ShipTo>
         </POLine>
    </PO>
</EntireOrder>



My xsl:



 <xsl:output method="xml" indent="yes"/>
 <xsl:template match="/">
  <Orders> 
  
   <xsl:for-each select="EntireOrder/PO">
  
<Order>
  
 <ShipToCustomer><xsl:apply-templates 
select="POLine/ShipTo/ShipInfo1"/></ShipToCustomer>
  <Description><xsl:apply-templates 
select="POLine/SomeLineInfo2"/></Description>
  <Quantity><xsl:apply-templates select="POLine/SomeOtherLineInfo"/></Quantity>
  <Buyer><xsl:apply-templates select="POHeader/SomeHeaderInfo1"/></Buyer>
  <Phone><xsl:apply-templates select="POHeader/SomeHeaderInfo2"/></Phone>
  <UnitPrice><xsl:apply-templates select="POLine/SomeLineInfo3"/></UnitPrice>
  <Total><xsl:apply-templates select="POLine/SomeLineInfo4"/></Total>

</Order>
   
</xsl:for-each>

</Orders>
 
  
 </xsl:template>


Again, if I have say 2 lines on a PO, I will get 1 line for the PO but say the 
Buyer element will have both lines in the same element.  Heres what I get when 
there are more than 1 line.  Notice all the elements coming from POLine just 
double up the data.  I would like 2 different <Order> records.  

<Order>
    <ShipToCustomer>Walmart</ShipToCustomer
    <Description>TagsTags</Description>
    <Quantity>100100>
    <Buyer>Steve</Buyer>
    <phone>555-5555</phone>
    <UnitPrice>1010</UnitPrice>
    <Total>10001000</Total>
</Order>


     

--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--

<Prev in Thread] Current Thread [Next in Thread>