Altova Mailing List Archives>Archive Index >microsoft.public.xsl Archive Home >Recent entries >Thread Prev - Re: Node Grouping >Thread Next - Re: Node Grouping Re: Node GroupingTo: NULL Date: 6/1/2004 4:39:00 PM Thanks for the reply! If you don't mind, I have another question ...
Here is the exact XML structure that I am working with ...
<Products>
<ProductsItem>
<Product>
<PacketData>
<Product>
<ProductNbr>1</ProductNbr>
<Description>1 Description</Description>
</Product>
</PacketData>
</Product>
<Identifiers>
<PacketData>
<Identifiers>
<Identifier>
<Type>ECCN Nbr</Type>
<Value>ECCN-1</Value>
</Identifier>
<Identifier>
<Type>PO Nbr</Type>
<Value>PO-1</Value>
</Identifier>
<Identifier>
<Type>SE Nbr</Type>
<Value>SE-1</Value>
</Identifier>
</Identifiers>
</PacketData>
</Identifiers>
</ProductsItem>
<ProductsItem>
<Product>
<PacketData>
<Product>
<ProductNbr>2</ProductNbr>
<Description>2 Description</Description>
</Product>
</PacketData>
</Product>
<Identifiers>
<PacketData>
<Identifiers>
<Identifier>
<Type>ECCN Nbr</Type>
<Value>ECCN-2</Value>
</Identifier>
<Identifier>
<Type>PO Nbr</Type>
<Value>PO-2</Value>
</Identifier>
</Identifiers>
</PacketData>
</Identifiers>
</ProductsItem>
</Products>
Because this is only a snippet of the actual XML structure, please keep in
mind that there can be many more repeating 'ProductsItem' nodes along with
many more repeating child 'Identifier' nodes under each 'ProductsItem' node.
I'm wodering how I can call a template that passes a group of 'ProductsItem'
nodes as a parameter. The group of 'ProductsItem' nodes being passed as a
parameter cannot have a count of child 'Identifier' nodes exceeding X. For
example, if the count that cannot be exceed is equal to 3, I want the first
template call to pass the first 'ProductsItem' node as the parameter group
(this is because the first 'ProductsItem' node has 3 child 'Identifier'
nodes. Because I cannot exceed a maximum 3 Identifier nodes per each
call-template instruction, I would still only want to pass the first
'ProductsItem' node if the count of its child 'Identifier' nodes was only 2.
Passing both 'ProductsItem' nodes would exceed a maximum count of 3
Identifiers per call-template instruction.). Then, on the second template
call the parameter would contain the second 'ProductsItem' node with two
remaining child 'Identifier' nodes. Another example would be to set the
maximum number of 'Identifier' nodes per template call to say 10. In this
case, my first and only template call would pass both 'ProductsItem' node
becuase the combined count of the 'Identifier' nodes is only 5.
I guess what I'm having trouble using the code snippet you provided above
because I don't know how to pass the first few 'ProductsItem' nodes in one
template call. Then, pick up where that last template call left off passing
the next few 'ProductsItem' nodes as a parameter. Also, it would be nice to
qualify the count of 'Identifier' nodes by their corresponding child 'Type'
node value. For example, I only want to include in my count
Identifier[Type='ECCN Nbr' or Type='PO Nbr'].
Thanks so much in advance for any help you can give me ... I'm definetly
having some trouble here.
Ben
"Yan Leshinsky" <yanl@o...> wrote in message
news:uy%23FlMaREHA.132@T......
> <xsl:for-each
> select="/Products/ProductsItem/Identifiers/Identifier[position() mod 3 =
> 1]">
> <xsl:call-template name="Foo">
> <xsl:with-param name="Bar" select="(.|following::Identifier[3 >
> position()])/../.."/>
> </xsl:call-template>
> </xsl:for-each>
>
> "Ben Schumacher" <bschumacher@i...> wrote in message
> news:umi2jwOREHA.3348@T......
> > Looking at the XML below ...
> >
> > <Products>
> > <ProductsItem>
> > <Identifiers>
> > <Identifier>
> > <Type>ECCN Nbr</Type>
> > <Value>12345</Value>
> > </Identifier>
> > <Identifier>
> > <Type>ECCN Nbr</Type>
> > <Value>54321</Value>
> > </Identifier>
> > </Identifiers>
> > </ProductsItem>
> > <ProductsItem>
> > <Identifiers>
> > <Identifier>
> > <Type>ECCN Nbr</Type>
> > <Value>13245</Value>
> > </Identifier>
> > </Identifiers>
> > </ProductsItem>
> > <ProductsItem>
> > <Identifiers>
> > <Identifier>
> > <Type>ECCN Nbr</Type>
> > <Value>13245</Value>
> > </Identifier>
> > <Identifier>
> > <Type>ECCN Nbr</Type>
> > <Value>14235</Value>
> > </Identifier>
> > <Identifier>
> > <Type>ECCN Nbr</Type>
> > <Value>15234</Value>
> > </Identifier>
> > </Identifiers>
> > </ProductsItem>
> > </Products>
> >
> > I'm trying to call a template and pass a parameter equal to a group of
> > ProductsItem nodes where the count of the combined Identifier child
nodes
> > under each ProductsItem node exceeds no more than a count of three. For
> > example, the first matching template call would contain a parameter
> > holding
> > the first two ProductsItem nodes because the combined count of the
> > Identifier nodes under these two ProductsItem nodes equals three. The
> > next
> > call would contain the third positioned (and only the third positioned)
> > ProductsItem node because that ProductsItem node also has a count of
three
> > child Identifier nodes. Hope this makes sense ... Any help is greatly
> > appreciated!
> >
> > Ben
> >
> >
>
>
| ||||||
| Company | Legal | Press | Partners | Careers | Sitemap | Contact Us | Altova Blog | Mobile | Full Site | |||
|
