xsl-list
[Top] [All Lists]

[xsl] Trouble passing XSL function a parameter

2015-11-05 09:49:12
I am attempting to write a function to parse and return the pseudo-attributes 
of a PI. In doing so, I am having trouble passing parameters. I am using oXygen 
17 and SaxonPE 9.6.0.5. My XSL and the test data are below:

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
    xmlns:xs="http://www.w3.org/2001/XMLSchema";
    xmlns:uspc="http://whatever.com";
    exclude-result-prefixes="xs uspc"
    version="2.0">

    <xsl:function name="uspc:parsePI">
        <xsl:param name="data" as="xs:string"/>
        <xsl:param name="att" as="xs:string"/>
        <xsl:variable name="searchstring">(<xsl:value-of 
select="$att"/>=)('|")(.*?)(\2)</xsl:variable>
        <xsl:analyze-string select="$data" regex="$searchstring" flags="i">
            <xsl:matching-substring>
                <xsl:value-of select="regex-group(3)"/>
            </xsl:matching-substring>
        </xsl:analyze-string>
    </xsl:function>

    <xsl:template match="processing-instruction('uspc-end-add')">
        Contents: <xsl:value-of select="."/>
        <xsl:variable name="self" select="."/>
        SWS: <xsl:value-of select="uspc:parsePI($self, 'sws')"/>
    </xsl:template>

</xsl:stylesheet>


Test data:
<test>
<?uspc-end-add id="f104450-r0001"  sws="C139995_131101"  symbols="yes"?>
</test>

When I debug, it appears that the second parameter "att" is undefined in the 
scope of the function. I'm not clear why this is the case.

I am aware that there is a saxon function that accomplishes this task, 
unfortunately, our production environment isn't running Saxon, but is XSL2.0, 
so I should be able to use my own function to accomplish this task.

Thanks in advance for any advice!

Regards,
Edward
--~----------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
EasyUnsubscribe: http://lists.mulberrytech.com/unsub/xsl-list/1167547
or by email: xsl-list-unsub(_at_)lists(_dot_)mulberrytech(_dot_)com
--~--
<Prev in Thread] Current Thread [Next in Thread>