Listing 2. a) Arkusz XSLT przyjmujący parametry zewntętrzne. b) fragment kodu wykonujący transformację z prostymi parametrami zewnętrznymi.
a)
<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt"
exclude-result-prefixes="msxsl">
<xsl:param name="data" select="''" />
<xsl:template match="/zamowienie">
<xsl:variable name="artykuly">
<xsl:apply-templates select="artykul" />
</xsl:variable>
<faktura data-wystawienia="{$data}"
wartosc="{format-number(sum(msxsl:node-set($artykuly)/artykul/@wartosc), '0.00')}">
<xsl:copy-of select="@*"/>
<xsl:copy-of select="$artykuly"/>
</faktura>
</xsl:template>
<xsl:template match="artykul">
<artykul wartosc="{format-number(@ilosc * @cena, '0.00')}">
<xsl:copy-of select="@*" />
</artykul>
</xsl:template>
</xsl:stylesheet>
b)
XslTransform xslt = new XslTransform();
xslt.Load(listingName + ".xslt");
XPathDocument xPathDoc = new XPathDocument("zamowienie.xml");
XsltArgumentList xsltArgList = new XsltArgumentList();
xsltArgList.AddParam("data", string.Empty, DateTime.Today.ToString("yyyy-MM-dd"));
XmlTextWriter xtw = new XmlTextWriter(listingName + "-wynik.xml", null);
xslt.Transform(xPathDoc, xsltArgList, xtw, new XmlUrlResolver());
xtw.Close();