This is the mail archive of the xsl-list@mulberrytech.com mailing list .


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

calling a web service from XSLT


(Apologies to xml-dev readers who may have seen my related message)

It's not a theoretical breakthrough or anything like that, but I thought 
xsl-list readers might be interested in a working example of calling a 
Web Service from XSLT.

For files like this:

<cardlist>
    <card number="00000000000000"/>
</cardlist>

you can run (with msxsl.exe - the "https:" URL appears to break saxon) 
the following  transform:

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"; 
version="1.0" xmlns:cdyne="http://ws.cdyne.com/";>
    <xsl:output indent="yes"/>
    <xsl:variable name="CheckCC" 
select="'https://secure.cdyne.com/creditcardverify/luhnchecker.asmx/CheckCC?CardNumber='" 
/>
    <!-- -->
    <!-- do a "pass-through" type transform  -->
    <xsl:template match="@* | node()">
        <xsl:copy>
            <xsl:apply-templates select="@* | node()"/>
        </xsl:copy>
    </xsl:template>
    <!-- -->
    <!-- for everything except elements in the target namespace -->
    <xsl:template match="card">
        <xsl:copy>
            <xsl:attribute name="CardValid">
                <xsl:value-of select="document(concat($CheckCC, 
@number))/cdyne:ReturnIndicator/cdyne:CardValid = 'true'" />
            </xsl:attribute>
            <xsl:apply-templates select="@* | node()"/>
        </xsl:copy>
    </xsl:template>
    <!-- -->
</xsl:stylesheet>

to get each card element marked up with a CardValid attribute containing 
a boolean true or false.

Not something I'd use in production lightly, and limited to Web Services 
with an HTTP GET binding, but satisfactory in its way.

Francis.


 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]