This is the mail archive of the xsl-list@mulberrytech.com mailing list .


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: unique elements from different sourcefile


At 2002-01-03 14:31 +0100, Thomas Winkler wrote:
>i'm really having a hard time figuring this little problem. because of
>simplicity and performance i used the muench method for finding unique
>elements and whatever else i needed. but this one just doesn't work for
>me.

I think because you need local scope for grouping.

>all i want is getting all possible children of a specific element. since
>the content model of some elements can be very complicated (such as
>"head"), most xpath axis don't work.

I see you are looking for unique descendents of each element ... I see that 
as a grouping within scope problem as well as the other post today (is it 
me, or does everything look like a nail today?).

>i think i have to use at least two for loops,

No, I think you just have to scope your grouping within the apex of what 
you need to be grouped.

>what do my xsl:key and xsl:for-each(s) have to look like. i tried many
>things, i just don't want to write here.

I wouldn't use keys here, I again see this as a "grouping with variables" 
problem.

I hope the code below helps.

.................... Ken


U:\utemp\winkler>type winkler.xml
<dtd>
<element name="head" content-type="element">
<content-model-expanded>
   <sequence-group>
     <or-group occurrence="*">
       <element-name name="meta"/>
       <element-name name="link"/>
       <element-name name="object"/>
     </or-group>
     <or-group>
       <sequence-group>
         <element-name name="title"/>
         <or-group occurrence="*">
           <element-name name="meta"/>
           <element-name name="link"/>
           <element-name name="object"/>
         </or-group>
         <sequence-group occurrence="?">
           <element-name name="base"/>
           <or-group occurrence="*">
             <element-name name="meta"/>
             <element-name name="link"/>
             <element-name name="object"/>
           </or-group>
         </sequence-group>
       </sequence-group>
       <sequence-group>
         <element-name name="base"/>
         <or-group occurrence="*">
           <element-name name="meta"/>
           <element-name name="link"/>
           <element-name name="object"/>
         </or-group>
         <sequence-group>
           <element-name name="title"/>
           <or-group occurrence="*">
             <element-name name="meta"/>
             <element-name name="link"/>
             <element-name name="object"/>
           </or-group>
         </sequence-group>
       </sequence-group>
     </or-group>
   </sequence-group>
</content-model-expanded>
</element>
</dtd>

U:\utemp\winkler>type winkler.xsl
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
                 version="1.0">

<xsl:output indent="yes"/>

<xsl:template match="/*">
   <xsl:for-each select="element">
     <xsl:sort name="@name"/>
     <element name="{@name}">
       <xsl:variable name="all-children" select=".//element-name"/>
       <xsl:for-each select="$all-children">
         <xsl:sort name="@name"/>
         <xsl:if test="generate-id(.)=
                       generate-id($all-children[@name=current()/@name])">
           <child-element name="{@name}"/>
         </xsl:if>
       </xsl:for-each>
     </element>
   </xsl:for-each>
</xsl:template>

</xsl:stylesheet>

U:\utemp\winkler>xt winkler.xml winkler.xsl
<?xml version="1.0" encoding="utf-8"?>
<element name="head">
<child-element name="meta"/>
<child-element name="link"/>
<child-element name="object"/>
<child-element name="title"/>
<child-element name="base"/>
</element>


--
Training Blitz: 3-days XSLT/XPath, 2-days XSLFO - Feb 18-22, 2002

G. Ken Holman                mailto:gkholman@CraneSoftwrights.com
Crane Softwrights Ltd.         http://www.CraneSoftwrights.com/s/
Box 266, Kars, Ontario CANADA K0A-2E0 +1(613)489-0999 (Fax:-0995)
ISBN 0-13-065196-6                        Definitive XSLT & XPath
ISBN 1-894049-08-X  Practical Transformation Using XSLT and XPath
ISBN 1-894049-07-1               Practical Formatting Using XSLFO
XSL/XML/DSSSL/SGML/OmniMark services, books(electronic, printed),
articles, training(instructor-live,Internet-live,web/CD,licensed)
Next public training:   2002-01-10,11,16,18,02-11,12,13,15,18,21,
-                                03-11,14,15,18,19,04-08,09,10,12


 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]