Jump to content

Question About Variables With Conditional And Templates


dswitzer
 Share

Recommended Posts

Hi there. I'm new to xslt but I've done a fair amount of research on it in the last couple of days. I'm missing something when it comes to variables, though. What I would like to do is check the value of a field (ows_Style) and if it's equal to something ('~New~Paragraph~') then set a variable (Prefix) to some value ('abc') so that I can add that value to the output. In my current output I'm displaying 'aaa' and 'bbb' in order to see what gets displayed between them -- but right now nothing does. My expectation was that in my CHOOSE statement one of the two parts (the WHEN or the OTHERWISE) would be executed no matter what, so $Prefix would have either the value 'abc' or the value 'xyz'. If you could let me know what I need to do to make this work, I'd really appreciate it. Here's my xml:

<?xml version="1.0" encoding="UTF-8"?><listitems xmlns:s="uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882" xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" xmlns:rs="urn:schemas-microsoft-com:rowset" xmlns:z="#RowsetSchema" > <rs:data ItemCount="883">  <z:row ows_LookupKey="CANC300" ows_Priority="1.00000000000000" ows_Language="en_CA" ows_Style="~New~Paragraph~" ows_Content="MEMO TO: {var}BN_ProducerCode_Description{/var}" ows_MetaInfo="391;#" ows__ModerationStatus="0" ows__Level="1" ows_ID="391" ows_owshiddenversion="3" ows_UniqueId="391;#{D30E3EB7-238C-4989-BBDD-ED4D9F1AD8CE}" ows_FSObjType="391;#0" ows_Created="2011-12-02 10:12:29" ows_FileRef="391;#sites/coop/base/Lists/Content Pages  Sections/391_.000" />  <z:row ows_LookupKey="CANC300" ows_Priority="2.00000000000000" ows_Language="en_CA" ows_Style="~New~Paragraph~" ows_Content="DATE: {var}BN_EditEffectiveDate{/var}" ows_MetaInfo="393;#" ows__ModerationStatus="0" ows__Level="1" ows_ID="393" ows_owshiddenversion="3" ows_UniqueId="393;#{92C36A45-6B75-48E4-B03A-29EDECE4A246}" ows_FSObjType="393;#0" ows_Created="2011-12-02 10:12:29" ows_FileRef="393;#sites/coop/base/Lists/Content Pages  Sections/393_.000" /> </rs:data></listitems>

And here's my xslt:

<?xml version="1.0"?><xsl:stylesheet version="1.0" xmlns:xsl="[url="http://www.w3.org/1999/XSL/Transform"]http://www.w3.org/1999/XSL/Transform[/url]" xmlns:s="uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882" xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" xmlns:rs="urn:schemas-microsoft-com:rowset" xmlns:z="#RowsetSchema" > <xsl:output method="text" encoding="windows-1252" /> <xsl:template match="/">  <xsl:text>LookupKey,Priority,Language,Style,Content
</xsl:text>  <xsl:apply-templates select="listitems"/> </xsl:template> <xsl:template match="listitems">  <xsl:apply-templates select="rs:data"/> </xsl:template> <xsl:template match="rs:data">  <xsl:apply-templates select="z:row"/> </xsl:template> <xsl:template match="z:row">  <xsl:variable name="Prefix">   <xsl:choose>	<xsl:when test="@ows_Style = '~New~Paragraph~'">	 <xsl:copy-of select="abc" />	</xsl:when>	<xsl:otherwise>	 <xsl:copy-of select="xyz" />	</xsl:otherwise>   </xsl:choose>  </xsl:variable>  <xsl:value-of select="concat(@ows_LookupKey,',' ,format-number(@ows_Priority,'####'), ',',@ows_Language,',' ,@ows_Style,',aaa',$Prefix,'bbb')"/>  <xsl:text>
</xsl:text> </xsl:template></xsl:stylesheet>

Dave

Link to comment
Share on other sites

Well the xsl:copy-of select="abc" respectively "xyz" makes a deep copy of any "abc" respectively "xyz" child nodes of the context node which is the "row" element. The "row" elements are empty so I suspect you want to output a string with the literal content "abc" respectively "xyz". To do that you simply need

<xsl:text>abc</xsl:text>

or

<xsl:value-of select="'abc'"/>

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...