Subject: Re: [xsl] unique elements from different sourcefile From: "G. Ken Holman" <gkholman@xxxxxxxxxxxxxxxxxxxx> Date: Thu, 03 Jan 2002 10:04:19 -0500 |
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.
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 think i have to use at least two for loops,
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.
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: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>
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@xxxxxxxxxxxxxxxxxxxx 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
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] unique elements from differen, Thomas Winkler | Thread | Re: [xsl] unique elements from diff, Thomas Winkler |
Re: [xsl] RE: For expressions and /, Jeni Tennison | Date | Re: [xsl] unique elements from diff, Thomas Winkler |
Month |