Hi ,
I've a problem to retrieve an answer from the stylesheet processors (Xalan/saxon).
here is the start point
I want always get the default section 'param' parameter, and if the 'delcode' parameter matches the specific delivery print the 'param' parameter of
the specific section.
xml:
<?xml version="1.0" encoding="UTF-8"?>
<deliveries xmlns:xsi="
http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocat
ion="deliv
eries.xsd"
>
<!-- ##########################
##########
##########
##########
######### -->
<defaults>
<param name="IN_SMD" value="y" />
<param name="IN_SMC" value="y" />
<param name="MAX_SPLITS" value="1" />
<param name="DEL_ZONE" value="MED" />
<param name="BP_DELS" value="" />
<param name="PREP_SCRIPT" value="SMXXX_PREP" />
<param name="WAIT_FOR_SPLITTED_DE
L" value="" />
<param name="WSS_LOCATION" value="" />
<param name="PRIO_INCREMENT" value="0" />
<param name="S2SM_LOGNAME" value="" />
<param name="WEG2_PROXY_FILE" value="" />
<param name="ADDITIONAL_WORK_RESS
OURCE" value="" />
<param name="HIS_SCENFILELIST" value="" />
<param name="STR_SCENFILELIST" value="blub.cml" />
<param name="LIQ_SCENFILELIST" value="liqui$(do_liqui_str
ess ${CURR_DATE} FCE).xml" />
<param name="BAC_SCENFILELIST" value="" />
<param name="ADDITIONAL_SHOPPINGL
IST" value="" />
<param name="DO_HIS" value="y" />
<param name="DO_STRESS" value="y" />
<param name="DO_LIQUI" value="y" />
<param name="DO_BACKTEST" value="y" />
<param name="DO_POSLOAD" value="y" />
<param name="DO_ROPL" value="y" />
<param name="DO_MRAGG" value="y" />
<param name="DO_PORTFOLIOFI" value="n" />
<param name="CO_EXPORT" value="" />
<param name="FILTER_FILENAME" value="filter_smodul.xml" />
</defaults>
<!-- ##########################
##########
##########
##########
######### -->
<delivery code="_1" dhs99="AAA" name="AAA_LONG">
<param name="MAX_SPLITS" value="4" />
<param name="BP_DELS" value="WEG2" />
</delivery>
<delivery code="_2" dhs99="BBB" name="BBB_LONG">
<param name="MAX_SPLITS" value="36" />
<param name="PRIO_INCREMENT" value="1" />
<param name="BP_DELS" value="WEG2 bla" />
<param name="S2SM_LOGNAME" value="bla />
<param name="ADDITIONAL_WORK_RESS
OURCE" value="blabla" />
</delivery>
<delivery code="_M" dhs99="CCC" name="CCC_long">
<param name="BP_DELS" value="WEG2 REDS" />
<param name="DO_STRESS" value="n" />
<param name="HIS_SCENFILELIST" value="blab.xml" />
</delivery>
</deliveries>
xsl:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="
http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text" version="1.0" encoding="UTF-8"/>
<xsl:param name="param"></xsl:param>
<xsl:param name="delcode"></xsl:param
>
<xsl:template match="deliveries">
<xsl:apply-templates>
<xsl:with-param name="myparam" select="$param"/>
<xsl:with-param name="mydelcode" select="$delcode"/>
</xsl:apply-templates>
</xsl:template>
<xsl:template match="deliveries/defaults
/param">
<xsl:param name="myparam"/>
<xsl:param name="mydelcode"/>
<xsl:if test="not ($myparam) or ($myparam=@name)">
<xsl:value-of select="@name"/>
<xsl:text>="</xsl:text>
<xsl:value-of select="@value"/>
<xsl:text>"
</xsl:text
>
</xsl:if>
</xsl:template>
<xsl:template match="deliveries/delivery
/param">
<xsl:param name="myparam"/>
<xsl:param name="mydelcode"/>
<xsl:if test="not ($myparam) or ($myparam=@name)">
<xsl:if test="$mydelcode=../@code"
>
<xsl:value-of select="@name"/>
<xsl:text>="</xsl:text>
<xsl:value-of select="@value"/>
<xsl:text>"
</xsl:text
>
</xsl:if>
</xsl:if>
</xsl:template>
<xsl:template match="text()">
</xsl:template>
</xsl:stylesheet>
if i use sabcmd everything works right:
./sabcmd deliveries_param.xsl deliveries.xml \$param=DO_STRESS \$delcode=_M
output:
DO_STRESS=y # from default
DO_STRESS=n # from _M
but each other i tested fails:
Xalan ... -p param 'DO:STRESS' -p delcode '_M'
java -cp xalan.jar org.apache.xalan.xslt.Proc
ess -IN deliveries.xml -XSL deliveries_param.xsl -PARAM param "'DEL_ZONE'" -PARAM delcode "'=_M'"
java -cp saxon.jar com.icl.saxon.StyleSheet ... param=DO_STRESS delcode=_M
output:
always print the complete default section 'NAME=VALUE'
Start Free Trial