Subject: Re: [xsl] Apply Comment Position From: "Martin Honnen martin.honnen@xxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> Date: Fri, 26 Feb 2021 06:22:35 -0000 |
On 26.02.2021 06:13, Byomokesh Sahoo sahoo.byomokesh@xxxxxxxxx wrote: > Hi, > > Please look at the below xml, xslt and required output. I tried > positionB function to get the comment inside <mail> in respective > <ext-link>. I am facing a problem whereB ( <!--xmltex > \gdef\EmailAuthIdDefnII{\MailAuthIdII}-->) refers to two <ext-link>. > Could you please anyone help on this. Which version of XSLT can you use? What defines a relation between a comment "xmltext" and an "ext-link" element? Can't that just be solved by B <xsl:template match="article-meta"> B B B <xsl:copy> B B B B B <xsl:for-each select="comment()[starts-with(., 'xmltext')] | ext-link" group-starting-with="comment()"> B B B B B B B B <xsl:for-each select="tail(current-group())"> B B B B B B B B B B B <cp id="{@id}"> B B B B B B B B B B B B B <email> B B B B B B B B B B B B B B B B <xsl:copy-of select="node(), current-group()[1]"/> B B B B B B B B B B B </email> B B B B B B B B </cp> B B B B </xsl:for-each-group> B </xsl:copy> </xsl:template> > > > INPUT -- > <article> > <article-meta> > <!--xmltex \gdef\EmailAuthIdDefnI{\MailAuthIdI}--> > <ext-link ext-link-type="email" id="42em1">hadiao@nencn</ext-link> > <!--xmltex \gdef\EmailAuthIdDefnII{\MailAuthIdII}--> > <ext-link ext-link-type="email" id="42em2">uip@xxxxxxxxx > <mailto:uip@xxxxxxxxx></ext-link> > <!--xmltex \gdef\EmailAuthIdDefnII{\MailAuthIdII}--> > <ext-link ext-link-type="email" id="42em3">gyuliu@hkbu</ext-link> > <ext-link ext-link-type="email" id="em4">90727@xxxxxx > <mailto:90727@xxxxxx></ext-link> > <!--xmltex \gdef\EmailAuthIdDefnIV{\MailAuthIdIV}--> > <ext-link ext-link-type="email" id="em5">sdu@xxxxxxx > <mailto:sdu@xxxxxxx></ext-link> > </article-meta> > </article> > REQUIRED OUTPUT: -- > > <article> > B B <article-meta> > B B B <cp id="42em1"> > B B B B B <email>hadiao@nencn<!--xmltex > \gdef\EmailAuthIdDefnI{\MailAuthIdI}--></email> > B B B </cp> > B B B <cp id="42em2"> > B B B B B <email>uip@xxxxxxxxx <mailto:uip@xxxxxxxxx><!--xmltex > \gdef\EmailAuthIdDefnII{\MailAuthIdII}--></email> > B B B </cp> > B B B <cp id="42em3"> > B B B B B <email>gyuliu@hkbu<!--xmltex > \gdef\EmailAuthIdDefnII{\MailAuthIdII}--></email> > B B B </cp> > B B B <cp id="em4"> > B B B B B <email>90727@xxxxxx <mailto:90727@xxxxxx><!--xmltex > \gdef\EmailAuthIdDefnIV{\MailAuthIdIII}--></email> > B B B </cp> > B B B <cp id="em5"> > B B B B B <email>sdu@xxxxxxx <mailto:sdu@xxxxxxx><!--xmltex > \gdef\EmailAuthIdDefnIV{\MailAuthIdIV}--></email> > B B B </cp> > B B </article-meta> > </article> > > My XSLT: -- > > <xsl:template match="article"> > <article> > <xsl:apply-templates/> > </article> > </xsl:template> > > <xsl:template match="article-meta"> > <xsl:element name="article-meta"> > <xsl:apply-templates/> > </xsl:element> > </xsl:template> > <xsl:template match="comment()"> > <xsl:copy/> > </xsl:template> > > <xsl:template match="ext-link[position()=1]"> > <xsl:if test="@ext-link-type='email'[position()=1]"> > <xsl:element name="cp"> > <xsl:attribute name="id"> > <xsl:value-of select="@id"/> > </xsl:attribute> > > <email> > <xsl:apply-templates/> > <xsl:apply-templates > select="ancestor-or-self::article-meta/comment()[matches(., > 'EmailAuthIdDefn')][position()=1]"/> > </email> > </xsl:element> > </xsl:if> > </xsl:template> > <xsl:template match="ext-link[position()=2]"> > <xsl:if test="@ext-link-type='email'[position()=1]"> > <xsl:element name="cp"> > <xsl:attribute name="id"> > <xsl:value-of select="@id"/> > </xsl:attribute> > <email> > <xsl:apply-templates/> > <xsl:apply-templates > select="ancestor-or-self::article-meta/comment()[matches(., > 'EmailAuthIdDefn')][position()=2]"/> > </email> > </xsl:element> > </xsl:if> > </xsl:template> > <xsl:template match="ext-link[position()=3]"> > <xsl:if test="@ext-link-type='email'[position()=1]"> > <xsl:element name="cp"> > <xsl:attribute name="id"> > <xsl:value-of select="@id"/> > </xsl:attribute> > <email> > <xsl:apply-templates/> > <xsl:apply-templates > select="ancestor-or-self::article-meta/comment()[matches(., > 'EmailAuthIdDefn')][position()=3]"/> > </email> > </xsl:element> > </xsl:if> > </xsl:template> > <xsl:template match="ext-link[position()=4]"> > <xsl:if test="@ext-link-type='email'[position()=1]"> > <xsl:element name="cp"> > <xsl:attribute name="id"> > <xsl:value-of select="@id"/> > </xsl:attribute> > <email> > <xsl:apply-templates/> > <xsl:apply-templates > select="ancestor-or-self::article-meta/comment()[matches(., > 'EmailAuthIdDefn')][position()=4]"/> > </email> > </xsl:element> > </xsl:if> > </xsl:template> > <xsl:template match="ext-link[position()=5]"> > <xsl:if test="@ext-link-type='email'[position()=1]"> > <xsl:element name="cp"> > <xsl:attribute name="id"> > <xsl:value-of select="@id"/> > </xsl:attribute> > <email> > <xsl:apply-templates/> > <xsl:apply-templates > select="ancestor-or-self::article-meta/comment()[matches(., > 'EmailAuthIdDefn')][position()=5]"/> > </email> > </xsl:element> > </xsl:if> > </xsl:template> > > Thanks > Byomokesh > XSL-List info and archive <http://www.mulberrytech.com/xsl/xsl-list> > EasyUnsubscribe <http://lists.mulberrytech.com/unsub/xsl-list/582271> > (by email <>)
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] Apply Comment Position, Byomokesh Sahoo saho | Thread | Re: [xsl] Apply Comment Position, Martin Honnen martin |
[xsl] Apply Comment Position, Byomokesh Sahoo saho | Date | Re: [xsl] Apply Comment Position, Martin Honnen martin |
Month |