开发者

Need to remove Note: from the start of a string using XSLT

I have been tasked with styling XML and so far nearly all of the tags I have been given are either p or ph which just display the contents of the tag on screen and I can style as required

eg:

<p outputclass="LC AStatProv">Council Regulation (EC) No 2201/2003 of 27 November 2003 Concerning Jurisdiction and the Recognition and Enforcement of Judgments in Matrimonial Matters and in Matters of Parental Responsibility, repealing Regulation (EC) No 1347/2000 (Brussels II Revised) (2003) OJ L 338/1, Art&#x00A0;20</p>

will display as:

Council Regulation (EC) No 2201/2003 of 27 November 2003 Concerning Jurisdiction and the Recognition and Enforcement of Judgments in Matrimonial Matters and in Matters of Parental Responsibility, repealing Regulation (EC) No 1347/2000 (Brussels II Revised) (2003) OJ L 338/1, Art 20

Today I have noticed that a new note tag has been used and this is causing "Note: " to be prepended to the beginning of each string eg:

<p outputclass="LC ACourt"><note outputclass="CaseSearchCourt">Court of Appeal</note></p>

will display as:

Note: Re A (Abduction: Interim Directions: Accommodation by Local Authority) [2010] EWCA Civ 586 [2011] 1 FLR 1

The FO produced for this is:

<fo:block><fo:inline font-weight="bold" border-right-width="0pt" border-left-width="0pt">Note: </fo:inline>  Court of Appeal</fo:block>

I have tried the following code gleaned from elsewhere on this site but it didn't remove the string I wanted:

<xsl:template match="note">
        <note>
            <xsl:if test="contains(., 'Note:')">
                <xsl:call-template name="remove">
                    <xsl:with-param name="value" select="."/>
                </xsl:call-template>
            </xsl:if>
        </note>
    </xsl:template>
<xsl:template name="remove">
        <xsl:param name="value"/>
        <xsl:value-of select="concat(substring-before($value, 'Note:'), substring-after($value, 'Note:'))"/>
    </xsl:template>

I have tried to see where XSLT gets the "Note: " from but can't find it anywhere so my next thought is to try and pattern match the string and remove "Note: " from the beginning of the string. Is this a good way to go about this and how would I do this?

thanks.

EDIT: Just to summarise my rambling and confusing question.

Where it renders:

Note: Re A (Abduction: Interim Directions: Accommodation by Local Authority) [2010] EWCA Civ 586 [2011] 1 FLR 1

I just want it to render:

Re A (Abduction: Interim Directions: Accommodation by Local Authority) [2010] EWCA Civ 586 [2011] 1 FLR 1

EDIT 2 and the answer

My initial investigations were based upon grepping for Note: which wasn't being found. I have though found the following:

<xsl:template match="*[con开发者_如何学Ctains(@class,' topic/note ')]">

and then commented out the following lines:

<!--<xsl:text>Note</xsl:text>-->
                    </xsl:otherwise>
                </xsl:choose>
                <!--<xsl:text>: </xsl:text>-->
            </fo:inline>
            <xsl:text>  </xsl:text>
            <xsl:apply-templates/>

And I have got rid of the "Note: ".

EDIT 3:

This didn't actually work as it created an opening block but didn't close it so I ended up removing the entire <xsl:template match="*[contains(@class,' topic/note ')]"> as we have no need for any type of notes in our system


This didn't actually work as it created an opening block but didn't close it so I ended up removing the entire <xsl:template match="*[contains(@class,' topic/note ')]"> as we have no need for any type of notes in our system

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜