From UGP-Wiki
[edit] Useful Links
[edit] Example File
- This file processes user-input for the program Q-Chem and creates a valid program input file
- For an example of the user-input file, see the Useful Links section
<xsl:stylesheet version = '1.0'
xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>
<!-- **********************************************************************
* the following line is needed or else we get white space in the output
* that we do not ask for or want
********************************************************************** -->
<xsl:strip-space elements="*" />
<xsl:output method="text" omit-xml-declaration="yes"/>
<!-- **********************************************************************
* root template
*************************************************************************** -->
<xsl:template match="/">
<!-- *******************************************************************
* Title Section
************************************************************************ -->
<xsl:apply-templates select="//element[@name='title']"/>
<!-- *******************************************************************
* $molecule Section
************************************************************************ -->
<xsl:text>
$molecule
</xsl:text>
<xsl:choose>
<xsl:when test="//element[@name='coordinates']">
<xsl:apply-templates select="//element[@name='charge']"/>
<xsl:apply-templates select="//element[@name='multiplicity']"/>
<xsl:apply-templates select="//element[@name='coordinates']"/>
</xsl:when>
<xsl:otherwise>
<xsl:text>READ </xsl:text>
<xsl:value-of select="//element[@name='readFile']/value"/>
</xsl:otherwise>
</xsl:choose>
<xsl:text>
$end
</xsl:text>
<!-- *******************************************************************
* $rem Section
************************************************************************ -->
<xsl:text>
$rem
</xsl:text>
<!--***********************************
* separate formatting for primary and second basis set parameters
*********************************-->
<xsl:call-template name="basis_set"/>
<xsl:if test="//element[@name='basis_set_2']/value!='default'">
<xsl:call-template name="basis_set_2"/>
</xsl:if>
<xsl:for-each select="/app/element">
<xsl:variable name="myName">
<xsl:value-of select="@name"/>
</xsl:variable>
<xsl:choose>
<!-- **************************************************************
* Dont process elements that belong in other (non $rem) sections, they will be processed later
************************************************************** -->
<xsl:when test="@name='title'">
</xsl:when>
<xsl:when test="@name='charge'">
</xsl:when>
<xsl:when test="@name='multiplicity'">
</xsl:when>
<xsl:when test="@name='coordinates'">
</xsl:when>
<xsl:when test="@name='constraints'">
</xsl:when>
<xsl:when test="@name='ud_basis'">
</xsl:when>
<xsl:when test="@name='ud_exchange'">
</xsl:when>
<xsl:when test="@name='ud_ecp'">
</xsl:when>
<xsl:when test="@name='occupied'">
</xsl:when>
<xsl:when test="@name='readFile'">
</xsl:when>
<xsl:when test="@name='basis_set'">
</xsl:when>
<xsl:when test="@name='basis_diffusion'">
</xsl:when>
<xsl:when test="@name='basis_polarization'">
</xsl:when>
<xsl:when test="@name='basis_set_2'">
</xsl:when>
<xsl:when test="@name='basis_diffusion_2'">
</xsl:when>
<xsl:when test="@name='basis_polarization_2'">
</xsl:when>
<xsl:when test="@name='ud_constraint'">
</xsl:when>
<xsl:when test="@name='ud_fixed'">
</xsl:when>
<xsl:when test="@name='ud_dummy'">
</xsl:when>
<xsl:when test="@name='ud_connect'">
</xsl:when>
<xsl:when test="@name='ud_isotopes'">
</xsl:when>
<!-- **************************************************************
* Dont process elements that are only formatting elements
************************************************************** -->
<xsl:when test="@name='show_nmr'">
</xsl:when>
<xsl:when test="@name='qchem_keyword'">
</xsl:when>
<xsl:when test="@name='show_rc'">
</xsl:when>
<xsl:when test="@name='show_rcf'">
</xsl:when>
<xsl:when test="@name='show_wamp'">
</xsl:when>
<xsl:when test="@name='show_basis2'">
</xsl:when>
<xsl:when test="@name='moleculeSpecification'">
</xsl:when>
<xsl:when test="@name='show_print'">
</xsl:when>
<xsl:when test="@name='show_dft'">
</xsl:when>
<xsl:when test="@name='show_scf'">
</xsl:when>
<xsl:when test="@name='show_cm'">
</xsl:when>
<xsl:when test="@name='show_lm'">
</xsl:when>
<xsl:when test="@name='show_geom'">
</xsl:when>
<xsl:when test="@name='show_vib'">
</xsl:when>
<xsl:when test="@name='show_sym'">
</xsl:when>
<xsl:when test="@name='show_es'">
</xsl:when>
<xsl:when test="@name='constraint_toggle'">
</xsl:when>
<!-- **************************************************************
* Dont process numberical elements that have the default value, omitting them creates a cleaner input file.
************************************************************** -->
<xsl:when test="@name='rpath_max_cycles'">
<xsl:if test="child::value!=20">
<xsl:call-template name="rem"/>
</xsl:if>
</xsl:when>
<xsl:when test="@name='rpath_direction'">
<xsl:if test="child::value!=1">
<xsl:call-template name="rem"/>
</xsl:if>
</xsl:when>
<xsl:when test="@name='d_scf_conv_1'">
<xsl:if test="child::value!=4">
<xsl:call-template name="rem"/>
</xsl:if>
</xsl:when>
<xsl:when test="@name='d_scf_conv_2'">
<xsl:if test="child::value!=4">
<xsl:call-template name="rem"/>
</xsl:if>
</xsl:when>
<xsl:when test="@name='d_cpscf_pertnum'">
<xsl:if test="child::value!=0">
<xsl:call-template name="rem"/>
</xsl:if>
</xsl:when>
<xsl:when test="@name='multipole_order'">
<xsl:if test="child::value!=4">
<xsl:call-template name="rem"/>
</xsl:if>
</xsl:when>
<xsl:when test="@name='chemsol'">
<xsl:if test="child::value=1">
<xsl:call-template name="rem"/>
</xsl:if>
</xsl:when>
<xsl:when test="@name='d_scf_max_1'">
<xsl:if test="child::value!=100">
<xsl:call-template name="rem"/>
</xsl:if>
</xsl:when>
<xsl:when test="@name='d_scf_max_2'">
<xsl:if test="child::value!=30">
<xsl:call-template name="rem"/>
</xsl:if>
</xsl:when>
<xsl:when test="@name='basis_lin_dep_thresh'">
<xsl:if test="child::value!=6">
<xsl:call-template name="rem"/>
</xsl:if>
</xsl:when>
<xsl:when test="@name='scf_convergence'">
<xsl:if test="child::value!=-1">
<xsl:call-template name="rem"/>
</xsl:if>
</xsl:when>
<xsl:when test="@name='scf_guess_mix'">
<xsl:if test="child::value!=0">
<xsl:call-template name="rem"/>
</xsl:if>
</xsl:when>
<xsl:when test="@name='thresh'">
<xsl:if test="child::value!=-1">
<xsl:call-template name="rem"/>
</xsl:if>
</xsl:when>
<xsl:when test="@name='max_diis_cycles'">
<xsl:if test="child::value!=50">
<xsl:call-template name="rem"/>
</xsl:if>
</xsl:when>
<xsl:when test="@name='diis_subspace_size'">
<xsl:if test="child::value!=15">
<xsl:call-template name="rem"/>
</xsl:if>
</xsl:when>
<xsl:when test="@name='incfock'">
<xsl:if test="child::value!=1">
<xsl:call-template name="rem"/>
</xsl:if>
</xsl:when>
<xsl:when test="@name='max_scf_cycles'">
<xsl:if test="child::value!=50">
<xsl:call-template name="rem"/>
</xsl:if>
</xsl:when>
<xsl:when test="@name='thresh_diis_switch'">
<xsl:if test="child::value!=2">
<xsl:call-template name="rem"/>
</xsl:if>
</xsl:when>
<xsl:when test="@name='varthresh'">
<xsl:if test="child::value!=0">
<xsl:call-template name="rem"/>
</xsl:if>
</xsl:when>
<xsl:when test="@name='xc_grid'">
<xsl:if test="child::value!=0">
<xsl:call-template name="rem"/>
</xsl:if>
</xsl:when>
<xsl:when test="@name='incdft_dendiff_thresh'">
<xsl:if test="child::value!=-1">
<xsl:call-template name="rem"/>
</xsl:if>
</xsl:when>
<xsl:when test="@name='incdft_dendiff_varthresh'">
<xsl:if test="child::value!=0">
<xsl:call-template name="rem"/>
</xsl:if>
</xsl:when>
<xsl:when test="@name='incdft_griddiff_thresh'">
<xsl:if test="child::value!=-1">
<xsl:call-template name="rem"/>
</xsl:if>
</xsl:when>
<xsl:when test="@name='incdft_griddiff_varthresh'">
<xsl:if test="child::value!=0">
<xsl:call-template name="rem"/>
</xsl:if>
</xsl:when>
<xsl:when test="@name='cfmm_order'">
<xsl:if test="child::value!=-1">
<xsl:call-template name="rem"/>
</xsl:if>
</xsl:when>
<xsl:when test="@name='epao_iterate'">
<xsl:if test="child::value!=0">
<xsl:call-template name="rem"/>
</xsl:if>
</xsl:when>
<xsl:when test="@name='mem_total'">
<xsl:if test="child::value!=2000">
<xsl:call-template name="rem"/>
</xsl:if>
</xsl:when>
<xsl:when test="@name='epao_weights'">
<xsl:if test="child::value!=115">
<xsl:call-template name="rem"/>
</xsl:if>
</xsl:when>
<xsl:when test="@name='integrals_buffer'">
<xsl:if test="child::value!=15">
<xsl:call-template name="rem"/>
</xsl:if>
</xsl:when>
<xsl:when test="@name='mem_static'">
<xsl:if test="child::value!=64">
<xsl:call-template name="rem"/>
</xsl:if>
</xsl:when>
<xsl:when test="@name='ao2mo_disk'">
<xsl:if test="child::value!=2000">
<xsl:call-template name="rem"/>
</xsl:if>
</xsl:when>
<xsl:when test="@name='n_frozen_core'">
<xsl:if test="child::value!=0">
<xsl:call-template name="rem"/>
</xsl:if>
</xsl:when>
<xsl:when test="@name='n_frozen_virtual'">
<xsl:if test="child::value!=0">
<xsl:call-template name="rem"/>
</xsl:if>
</xsl:when>
<xsl:when test="@name='cc_nhighspin'">
<xsl:if test="child::value!=0">
<xsl:call-template name="rem"/>
</xsl:if>
</xsl:when>
<xsl:when test="@name='cc_nlowspin'">
<xsl:if test="child::value!=0">
<xsl:call-template name="rem"/>
</xsl:if>
</xsl:when>
<xsl:when test="@name='cc_state_deriv'">
<xsl:if test="child::value!=-1">
<xsl:call-template name="rem"/>
</xsl:if>
</xsl:when>
<xsl:when test="@name='cc_refsym'">
<xsl:if test="child::value!=0">
<xsl:call-template name="rem"/>
</xsl:if>
</xsl:when>
<xsl:when test="@name='cis_n_roots'">
<xsl:if test="child::value!=0">
<xsl:call-template name="rem"/>
</xsl:if>
</xsl:when>
<xsl:when test="@name='cis_convergence'">
<xsl:if test="child::value!=6">
<xsl:call-template name="rem"/>
</xsl:if>
</xsl:when>
<xsl:when test="@name='cis_state_deriv'">
<xsl:if test="child::value!=0">
<xsl:call-template name="rem"/>
</xsl:if>
</xsl:when>
<xsl:when test="@name='sym_tol'">
<xsl:if test="child::value!=5">
<xsl:call-template name="rem"/>
</xsl:if>
</xsl:when>
<xsl:when test="@name='cc_print'">
<xsl:if test="child::value!=1">
<xsl:call-template name="rem"/>
</xsl:if>
</xsl:when>
<xsl:when test="@name='diis_print'">
<xsl:if test="child::value!=0">
<xsl:call-template name="rem"/>
</xsl:if>
</xsl:when>
<xsl:when test="@name='print_dist_matrix'">
<xsl:if test="child::value!=15">
<xsl:call-template name="rem"/>
</xsl:if>
</xsl:when>
<xsl:when test="@name='print_orbitals'">
<xsl:if test="child::value!=-1">
<xsl:call-template name="rem"/>
</xsl:if>
</xsl:when>
<xsl:when test="@name='geom_opt_print'">
<xsl:if test="child::value!=3">
<xsl:call-template name="rem"/>
</xsl:if>
</xsl:when>
<xsl:when test="@name='rpath_print'">
<xsl:if test="child::value!=2">
<xsl:call-template name="rem"/>
</xsl:if>
</xsl:when>
<xsl:when test="@name='vibman_print'">
<xsl:if test="child::value!=1">
<xsl:call-template name="rem"/>
</xsl:if>
</xsl:when>
<xsl:when test="@name='geom_opt_mode'">
<xsl:if test="child::value!=0">
<xsl:call-template name="rem"/>
</xsl:if>
</xsl:when>
<xsl:when test="@name='geom_opt_linear_angle'">
<xsl:if test="child::value!=165">
<xsl:call-template name="rem"/>
</xsl:if>
</xsl:when>
<xsl:when test="@name='geom_opt_max_cycles'">
<xsl:if test="child::value!=50">
<xsl:call-template name="rem"/>
</xsl:if>
</xsl:when>
<xsl:when test="@name='geom_opt_dmax'">
<xsl:if test="child::value!=300">
<xsl:call-template name="rem"/>
</xsl:if>
</xsl:when>
<xsl:when test="@name='geom_opt_max_diis'">
<xsl:if test="child::value!=0">
<xsl:call-template name="rem"/>
</xsl:if>
</xsl:when>
<xsl:when test="@name='geom_opt_tol_displacement'">
<xsl:if test="child::value!=1200">
<xsl:call-template name="rem"/>
</xsl:if>
</xsl:when>
<xsl:when test="@name='geom_opt_tol_energy'">
<xsl:if test="child::value!=100">
<xsl:call-template name="rem"/>
</xsl:if>
</xsl:when>
<xsl:when test="@name='geom_opt_tol_gradient'">
<xsl:if test="child::value!=300">
<xsl:call-template name="rem"/>
</xsl:if>
</xsl:when>
<xsl:when test="@name='fdiff_stepsize'">
<xsl:if test="child::value!=100">
<xsl:call-template name="rem"/>
</xsl:if>
</xsl:when>
<xsl:when test="@name='cpscf_nseg'">
<xsl:if test="child::value!=0">
<xsl:call-template name="rem"/>
</xsl:if>
</xsl:when>
<!-- **************************************************************
* Dont process pulldownmenus whose value is default, again to keep the input file clean
************************************************************** -->
<xsl:when test="child::value='default'">
</xsl:when>
<!-- **************************************************************
* special cases
************************************************************** -->
<xsl:when test="@name='purecart_h'">
</xsl:when>
<xsl:when test="@name='purecart_g'">
</xsl:when>
<xsl:when test="@name='purecart_f'">
</xsl:when>
<xsl:when test="@name='purecart_d'">
</xsl:when>
<!-- **************************************************************
* show all other elements as is
************************************************************** -->
<xsl:otherwise>
<xsl:call-template name="rem"/>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
<xsl:call-template name="purecart"/>
<xsl:text>$end
</xsl:text>
<!-- *******************************************************************
* $basis Section
************************************************************************ -->
<xsl:if test="//element[@name='ud_basis']">
<xsl:text>
$basis </xsl:text>
<xsl:apply-templates select="//element[@name='ud_basis']"/>
<xsl:text>
$end
</xsl:text>
</xsl:if>
<!-- *******************************************************************
* $xc_functional Section
************************************************************************ -->
<xsl:if test="//element[@name='ud_exchange']">
<xsl:text>
$xc_functional </xsl:text>
<xsl:apply-templates select="//element[@name='ud_exchange']"/>
<xsl:text>
$end
</xsl:text>
</xsl:if>
<!-- *******************************************************************
* $isotopes Section
************************************************************************ -->
<xsl:if test="//element[@name='ud_isotopes']">
<xsl:text>
$isotopes </xsl:text>
<xsl:apply-templates select="//element[@name='ud_isotopes']"/>
<xsl:text>
$end
</xsl:text>
</xsl:if>
<!-- *******************************************************************
* $ecp Section
************************************************************************ -->
<xsl:if test="//element[@name='ud_ecp']">
<xsl:text>
$ecp </xsl:text>
<xsl:apply-templates select="//element[@name='ud_ecp']"/>
<xsl:text>
$end
</xsl:text>
</xsl:if>
<!-- *******************************************************************
* $opt Section
************************************************************************ -->
<xsl:call-template name="opt"/>
<!-- *******************************************************************
* $xc_functional Section
************************************************************************ -->
<xsl:apply-templates select="//element[@name='xc_functional']"/>
<!-- *******************************************************************
* $occupied Section
************************************************************************ -->
<xsl:apply-templates select="//element[@name='occupied']"/>
</xsl:template>
<!-- **********************************************************************
* title
********************************************************************** -->
<xsl:template match="element[@name='title']">
<xsl:text>$comment
</xsl:text>
<xsl:value-of select="child::value"/>
<xsl:text>
$end
</xsl:text>
</xsl:template>
<!-- **********************************************************************
* charge
********************************************************************** -->
<xsl:template match="element[@name='charge']">
<xsl:value-of select="child::value"/>
</xsl:template>
<!-- **********************************************************************
* multiplicity
********************************************************************** -->
<xsl:template match="element[@name='multiplicity']">
<xsl:text> </xsl:text>
<xsl:value-of select="child::value"/>
</xsl:template>
<!-- **********************************************************************
* coordinates
********************************************************************** -->
<!-- **********************************************************************
* Generic for textareas
********************************************************************** -->
<xsl:template match="element[@name='coordinates']|element[@name='ud_basis']|element[@name='ud_exchange']|element[@name='ud_ecp']|element[@name='ud_isotopes']">
<xsl:text>
</xsl:text>
<xsl:value-of select="child::value"/>
</xsl:template>
<!-- **********************************************************************
* purecart, requires specific formatting
********************************************************************** -->
<xsl:template name="purecart">
<xsl:variable name="purecart_val">
<xsl:value-of select="//element[@name='purecart_h']/value"/>
<xsl:value-of select="//element[@name='purecart_g']/value"/>
<xsl:value-of select="//element[@name='purecart_f']/value"/>
<xsl:value-of select="//element[@name='purecart_d']/value"/>
</xsl:variable>
<xsl:if test="$purecart_val!=2111">
<xsl:text>purecart </xsl:text>
<xsl:value-of select="$purecart_val"/>
<xsl:text>
</xsl:text>
</xsl:if>
</xsl:template>
<!-- **********************************************************************
* Generic for the rem section
********************************************************************** -->
<xsl:template name="rem">
<xsl:value-of select="@name"/>
<xsl:text> </xsl:text>
<xsl:value-of select="child::value"/>
<xsl:text>
</xsl:text>
</xsl:template>
<!-- **********************************************************************
* opt: for constraints, fixed atoms, dummy atoms, connectivity
* -1st: check if new values (after all whitespace is removed) have changed
* -2nd: if any have changed, enter $opt section and format the text of each value that has changed
* -xsl:text are placed out of alignment to remove errant whitespace
********************************************************************** -->
<xsl:template name="opt">
<xsl:variable name="constraint_orig" select="'CONSTRAINT ENDCONSTRAINT'"/>
<xsl:variable name="fixed_orig" select="'FIXED ENDFIXED'"/>
<xsl:variable name="dummy_orig" select="'DUMMY ENDDUMMY'"/>
<xsl:variable name="connect_orig" select="'CONNECT ENDCONNECT'"/>
<xsl:variable name="constraint_new" select="//element[@name='ud_constraint']/value"/>
<xsl:variable name="fixed_new" select="//element[@name='ud_fixed']/value"/>
<xsl:variable name="dummy_new" select="//element[@name='ud_dummy']/value"/>
<xsl:variable name="connect_new" select="//element[@name='ud_connect']/value"/>
<xsl:if test="normalize-space($constraint_new)!=$constraint_orig or normalize-space($fixed_new)!=$fixed_orig or normalize-space($dummy_new)!=$dummy_orig or normalize-space($connect_new)!=$connect_orig">
<xsl:text>$opt
</xsl:text>
<xsl:if test="normalize-space($constraint_new)!=$constraint_orig">
<xsl:call-template name="formatText">
<xsl:with-param name="in" select="substring-before($constraint_new,'ENDCONSTRAINT')"/>
</xsl:call-template>
<xsl:text>
ENDCONSTRAINT
</xsl:text>
</xsl:if>
<xsl:if test="normalize-space($fixed_new)!=$fixed_orig">
<xsl:call-template name="formatText">
<xsl:with-param name="in" select="substring-before($fixed_new,'ENDFIXED')"/>
</xsl:call-template>
<xsl:text>
ENDFIXED
</xsl:text>
</xsl:if>
<xsl:if test="normalize-space($dummy_new)!=$dummy_orig">
<xsl:call-template name="formatText">
<xsl:with-param name="in" select="substring-before($dummy_new,'ENDDUMMY')"/>
</xsl:call-template>
<xsl:text>
ENDDUMMY
</xsl:text>
</xsl:if>
<xsl:if test="normalize-space($connect_new)!=$connect_orig">
<xsl:call-template name="formatText">
<xsl:with-param name="in" select="substring-before($connect_new,'ENDCONNECT')"/>
</xsl:call-template>
<xsl:text>
ENDCONNECT
</xsl:text>
</xsl:if>
<xsl:text>$end
</xsl:text>
</xsl:if>
</xsl:template>
<!--*****************************************
* formatText: removes trailing whitespace/newlines in input string
*******************************************-->
<xsl:template name="formatText">
<xsl:param name="in"/>
<xsl:choose>
<xsl:when test="contains(substring($in,string-length($in),1) , '
')">
<xsl:call-template name="formatText">
<xsl:with-param name="in" select="substring($in, 1, string-length($in)-1)"/>
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$in"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<!-- **********************************************************************
* xc_functional
********************************************************************** -->
<!--
<xsl:template match="element[@name='xc_functional']">
<xsl:text>$xc_functional
</xsl:text>
<xsl:value-of select="child::value"/>
<xsl:text>
$end</xsl:text>
</xsl:template>
-->
<!-- **********************************************************************
* occupied
********************************************************************** -->
<xsl:template match="element[@name='occupied']">
<xsl:text>$occupied
</xsl:text>
<xsl:value-of select="child::value"/>
<xsl:text>
$end</xsl:text>
</xsl:template>
<!--*************************************************
* basis processing, requires unique formatting due to conventions on how to write some basis set names
* -test if basis_set has a trailing 'G'
* -if it does, remove the 'G' then add on other components
* -if it doesn't. then add components in order
***************************************************-->
<xsl:template name="basis_set">
<xsl:text>basis </xsl:text>
<xsl:choose>
<xsl:when test="string-length(//element[@name='basis_set']/value)=1+string-length(substring-before(//element[@name='basis_set']/value,'G'))">
<xsl:value-of select="substring-before(//element[@name='basis_set']/value, 'G')"/>
<xsl:value-of select="//element[@name='basis_diffusion']/value"/>
<xsl:text>G</xsl:text>
<xsl:value-of select="//element[@name='basis_polarization']/value"/>
</xsl:when>
<xsl:when test="//element[@name='basis_set']/value='GEN' or 'Mixed'">
<xsl:value-of select="//element[@name='basis_set']/value"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="//element[@name='basis_set']/value"/>
<xsl:value-of select="//element[@name='basis_diffusion']/value"/>
<xsl:value-of select="//element[@name='basis_polarization']/value"/>
</xsl:otherwise>
</xsl:choose>
<xsl:text>
</xsl:text>
</xsl:template>
<xsl:template name="basis_set_2">
<xsl:text>basis2 </xsl:text>
<xsl:choose>
<xsl:when test="string-length(//element[@name='basis_set_2']/value)=1+string-length(substring-before(//element[@name='basis_set_2']/value,'G'))">
<xsl:value-of select="substring-before(//element[@name='basis_set_2']/value, 'G')"/>
<xsl:value-of select="//element[@name='basis_diffusion_2']/value"/>
<xsl:text>G</xsl:text>
<xsl:value-of select="//element[@name='basis_polarization_2']/value"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="//element[@name='basis_set_2']/value"/>
<xsl:value-of select="//element[@name='basis_diffusion_2']/value"/>
<xsl:value-of select="//element[@name='basis_polarization_2']/value"/>
</xsl:otherwise>
</xsl:choose>
<xsl:text>
</xsl:text>
</xsl:template>
</xsl:stylesheet>