Home. 
.

transparent

transparent

transparent

Altova Mailing List Archives


Re: Node Grouping

From: "Ben Schumacher" <bschumacher@--------------.--->
To: NULL
Date: 6/3/2004 12:36:00 PM
I'm sorry, but script is not an option.  I'm so close just this last piece.
Anything you can do would be greatly appreciated.

"Yan Leshinsky" <yanl@o...> wrote in message
news:eJeZx2YSEHA.1128@T......
> I would suggest using script for this. If this is not an option I can
think
> of something else, but this quite a puzzle.
>
> "Ben Schumacher" <bschumacher@i...> wrote in message
> news:uymEmlYSEHA.1372@T......
> > Thanks again for all the help.  If you don't mind, I would like to ask
> > another question ...
> >
> > I'm having trouble with two of the same 'ProductsItem' nodes being
passed
> > in
> > the parameter group of two separate template calls.  For example, lets
say
> > we set our count variable to 3.  Looking at the same sample XML below,
the
> > XSL is written to pass any 'ProductsItem' nodes in the ("Bar") parameter
> > where the Identifier/Type='ECCN Nbr' or Identifier/Type='PO Nbr'.
Because
> > the first 'ProductsItem' node contains only a count of 2 child
> > 'Identifier'
> > nodes that meet this criteria, the second 'ProductsItem' node is also
> > passed
> > in the parameter of the first call-template instruction because it has
an
> > Identifier node with a Type='ECCN Nbr' or Type='PO Nbr' in a position
less
> > than 3.  Now I have two 'ProductsItem' nodes being passed in the
parameter
> > of my first template call with a total of 4 child 'Identifier' nodes
that
> > meet my criteria.  This is too many.  I only want three.  If when
passing
> > an
> > additional 'ProductsItem' node exceeds the count of 3 maximum
'Identifier'
> > nodes per template call, I want to omit that additional 'ProductsItem'
> > node
> > until the next call-template is executed.  In the case described above,
I
> > would have only wanted the first 'ProductsItem' node to be passed in the
> > parameter because including the second 'ProductsItem' node will pass too
> > many 'Identifier' nodes.
> >
> > Thanks again in advance for all of your help ...  I really appreciate
your
> > time!
> >
> > Ben
> >
> >
> > "Yan Leshinsky" <yanl@o...> wrote in message
> > news:OGjVSXDSEHA.2876@T......
> >> If you want X to differ from execution to execution you shoud define it
> >> as
> > a
> >> parameter inside of stylesheet:
> >> <xsl:param name="count" select="3"/>
> >> 3 would be a default value of it.
> >> Code is almost the same:
> >> <xsl:for-each
> >> select="/Products/ProductsItem/Identifiers/Identifier[position() mod
> > $count
> >> = 1]">
> >>     <xsl:call-template name="Foo">
> >>         <xsl:with-param name="Bar"
> >> select="(.|following::Identifier[$count
> >>
> >> position()])/../.."/>
> >>     </xsl:call-template>
> >> </xsl:for-each>
> >>
> >> If you want to have additional conditions you should put these
additional
> >> predicates after Identifier:
> >> <xsl:for-each
> >> select=/Products/ProductsItem/Identifiers/Identifier[Type='ECCN Nbr' or
> >> Type='PO Nbr'][position() mod $count = 1]">
> >>     <xsl:call-template name="Foo">
> >>         <xsl:with-param name="Bar"
> >> select="(.|following::Identifier[Type='ECCN Nbr' or Type='PO
Nbr'][$count
> >>
> >> position()])/../.."/>
> >>     </xsl:call-template>
> >> </xsl:for-each>
> >>
> >> "Ben Schumacher" <bschumacher@i...> wrote in message
> >> news:OtMX3FCSEHA.2000@T......
> >> > 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
> >> >> >
> >> >> >
> >> >>
> >> >>
> >> >
> >> >
> >>
> >>
> >
> >
> >
>
>




transparent
Print
Mail
Like It
Disclaimer
.

These Archives are provided for informational purposes only and have been generated directly from the Altova mailing list archive system and are comprised of the lists set forth on www.altova.com/list/index.html. Therefore, Altova does not warrant or guarantee the accuracy, reliability, completeness, usefulness, non-infringement of intellectual property rights, or quality of any content on the Altova Mailing List Archive(s), regardless of who originates that content. You expressly understand and agree that you bear all risks associated with using or relying on that content. Altova will not be liable or responsible in any way for any content posted including, but not limited to, any errors or omissions in content, or for any losses or damage of any kind incurred as a result of the use of or reliance on any content. This disclaimer and limitation on liability is in addition to the disclaimers and limitations contained in the Website Terms of Use and elsewhere on the site.

.
.

transparent

transparent