|
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 |