|
[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Re: Find and change an attribute in a Processing Inst
Hello All,
I modified an example in Michael's XSLT 2nd Edition, page 552. Here is my XML. <?xml version="1.0" encoding="UTF-8"?> <?Fm Condition Comment Red NO_OVERRIDE hide?> <?Fm Condition Prolog PANTONE%20648-50%20CVP NO_OVERRIDE show?> <?Fm Condition Internal Black DOUBLE_UNDERLINE hide?> <concept> <title>Sample Title</title> <?Fm Condstart Prolog?> <prolog><author>bernard</author></prolog> <?Fm Condend Prolog?> <conbody> <section><p>Some sample text.</p> <draft-comment author="Rick" importance="high"> <p>an author comment</p> </draft-comment> <?Fm Condend Comment?> <p>Some more sample text.</p> </section> </conbody> </concept> Here is my stylesheet: <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:variable name="find" select="'hide'"/> <xsl:variable name="replace" select="'show'"/> <xsl:template name="do-replace">
<xsl:param name="text"/>
<xsl:choose>
<xsl:when test="contains($text, $find)">
<xsl:value-of select="substring-before($text, $find)"/>
<xsl:value-of select="$find"/>
<xsl:call-template name="do-replace">
<xsl:with-param name="text" select="substring-after($text, $find)"/>
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$text"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template><xsl:template match="*"> <xsl:copy> <xsl:copy-of select="@*"/> <xsl:apply-templates/> </xsl:copy> </xsl:template> <xsl:template match="/processing-instruction()"> <xsl:call-template name="do-replace"> <xsl:with-param name="text" select="."/> </xsl:call-template> </xsl:template> </xsl:stylesheet> Here is my output: <?xml version="1.0" encoding="UTF-8"?>Condition Comment Red NO_OVERRIDE hideCondition Prolog PANTONE%20648-50%20CVP NO_OVERRIDE showCondition Internal Black DOUBLE_UNDERLINE hide<concept> <title>Sample Title</title> <prolog><author>bernard</author></prolog> <conbody> <section><p>Some sample text.</p> <draft-comment author="Rick" importance="high"> <p>an author comment</p> </draft-comment> <p>Some more sample text.</p> </section> </conbody> </concept> There are three problems that I see: 1) The "hide" strings in the processing instructions are not being replaced by "show". 2) I am loosing the <? ?> delimiters on the processing instructions. 3) Lower level processing instructions are not getting written to the output (e.g. <?Fm Condstart Prolog?>). One other thing I noticed: in order to declare non-numeric variables, I have to use two pairs of quotes ("''"). I couldn't find this documented anywhere. I am using Saxon 8.5, but my stylesheet needs to be XSLT 1 compatible. Thanks in advance for any help you can give. Rick Quatro Carmen Publishing 585-659-8267 www.frameexpert.com
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|

Cart








