6

I am using SharePoint 2013. I am using the XML Viewer WebPart. In this webpart I have some xml and a write xsl in the xsl editor. Everything is working fine. I would like to filter te data on the start and enddate. How can I get the currentdate in the xsl?

XML:

<?xml version="1.0" encoding="utf-8"?> <sitegegevens> <vacatures> <vacature id="27223" > <titel>TitelA</titel> <startdate>16-05-2014</startdate> <enddate>11-08-2014</enddate> </vacature> <vacature id="27224" > <titel>TitelB</titel> <startdate>16-05-2014</startdate> <enddate>11-06-2014</enddate> </vacature> <vacature id="27225" > <titel>TitelC</titel> <startdate>16-09-2014</startdate> <enddate>11-10-2014</enddate> </vacature> </vacatures> </sitegegevens> 

XSL:

<xsl:stylesheet version="1.0" xmlns:x="http://www.w3.org/2001/XMLSchema" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt"> <xsl:template match="vacature"> <h1><xsl:value-of select="titel"/></h1> <br/> Start date: <xsl:value-of select="startdate"/><br/> End date: <xsl:value-of select="enddate"/><br/> <br/> </xsl:template> </xsl:stylesheet> 

I have try this, but give me the error "Failed to apply XSLT to the content":

<xsl:stylesheet version="1.0" xmlns:x="http://www.w3.org/2001/XMLSchema" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt"> <xsl:template match="vacature"> <h1><xsl:value-of select="titel"/></h1> <br/> Start date: <xsl:value-of select="startdate"/><br/> End date: <xsl:value-of select="enddate"/><br/> Current date: <xsl:variable name="current-date" select="translate(substring-before(date:date-time(), 'T'), '-', '')"/> <br/> </xsl:template> </xsl:stylesheet> 

UPDATE:

I have added a data view webpart and connect it to some list "FAQ". I have added inside this DVWP the today binding with the current date:

<WebPartPages:XsltListViewWebPart runat="server" ViewFlag="" ViewSelectorFetchAsync="False" InplaceSearchEnabled="False" ServerRender="False" ClientRender="True" InitialAsyncDataFetch="False" WebId="00000000-0000-0000-0000-000000000000" IsClientRender="False" GhostedXslLink="main.xsl" NoDefaultStyle="TRUE" ViewGuid="{B90A96CD-EEA6-45BD-9E12-136D71C72878}" EnableOriginalValue="False" DisplayName="FAQ3" ViewContentTypeId="0x" Default="FALSE" ListName="{72AB33F7-A53E-4F33-B5ED-146350A153E9}" ListId="72ab33f7-a53e-4f33-b5ed-146350a153e9" PageSize="-1" UseSQLDataSourcePaging="True" DataSourceID="" ShowWithSampleData="False" AsyncRefresh="False" ManualRefresh="False" AutoRefresh="False" AutoRefreshInterval="60" Title="FAQ" FrameType="Default" SuppressWebPartChrome="False" Description="" IsIncluded="True" ZoneID="wpz" PartOrder="3" FrameState="Normal" AllowRemove="True" AllowZoneChange="True" AllowMinimize="True" AllowConnect="True" AllowEdit="True" AllowHide="True" IsVisible="True" TitleUrl="/Lists/FAQ" DetailLink="/Lists/FAQ" HelpLink="" HelpMode="Modeless" Dir="Default" PartImageSmall="" MissingAssembly="Kan dit webonderdeel niet importeren." ImportErrorMessage="Kan dit webonderdeel niet importeren." PartImageLarge="" IsIncludedFilter="" ExportControlledProperties="False" ConnectionID="00000000-0000-0000-0000-000000000000" ID="g_b90a96cd_eea6_45bd_9e12_136d71c72878" ExportMode="NonSensitiveData" __MarkupType="vsattributemarkup" __WebPartId="{B90A96CD-EEA6-45BD-9E12-136D71C72878}" __AllowXSLTEditing="true" __designer:CustomXsl="fldtypes_Ratings.xsl" WebPart="true" Height="" Width=""><ParameterBindings> <ParameterBinding Name="dvt_sortdir" Location="Postback;Connection"/> <ParameterBinding Name="dvt_sortfield" Location="Postback;Connection"/> <ParameterBinding Name="dvt_startposition" Location="Postback" DefaultValue=""/> <ParameterBinding Name="dvt_firstrow" Location="Postback;Connection"/> <ParameterBinding Name="OpenMenuKeyAccessible" Location="Resource(wss,OpenMenuKeyAccessible)" /> <ParameterBinding Name="open_menu" Location="Resource(wss,open_menu)" /> <ParameterBinding Name="select_deselect_all" Location="Resource(wss,select_deselect_all)" /> <ParameterBinding Name="idPresEnabled" Location="Resource(wss,idPresEnabled)" /> <ParameterBinding Name="NoAnnouncements" Location="Resource(wss,noXinviewofY_LIST)" /> <ParameterBinding Name="NoAnnouncementsHowTo" Location="Resource(core,noXinviewofY_DEFAULT)" /> <ParameterBinding Name="AddNewAnnouncement" Location="Resource(wss,addnewitem)" /> <ParameterBinding Name="MoreAnnouncements" Location="Resource(wss,moreItemsParen)" /> <ParameterBinding Name="Today" Location="CAMLVariable" DefaultValue="CurrentDate"/> </ParameterBindings> <DataFields> </DataFields> <XmlDefinition> <View Name="{B90A96CD-EEA6-45BD-9E12-136D71C72878}" MobileView="TRUE" Type="HTML" Hidden="TRUE" DisplayName="FAQ3" Url="/SitePages/Vacatures.aspx" Level="1" BaseViewID="1" ContentTypeID="0x" ImageUrl="/_layouts/15/images/generic.png?rev=23" ><Query/><ViewFields><FieldRef Name="Title"/><FieldRef Name="Antwoord"/></ViewFields><RowLimit Paged="TRUE">30</RowLimit><Aggregations Value="Off"/><JSLink>clienttemplates.js</JSLink><XslLink Default="TRUE">main.xsl</XslLink><Toolbar Type="Standard"/></View></XmlDefinition> </WebPartPages:XsltListViewWebPart> 

After this I have added the variable today in my stylesheet:

<xsl:stylesheet version="1.0" xmlns:x="http://www.w3.org/2001/XMLSchema" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt"> <xsl:param name="Today" /> <xsl:template match="vacature"> <h1><xsl:value-of select="titel"/></h1> <br/> Start date: <xsl:value-of select="startdate"/><br/> End date: <xsl:value-of select="enddate"/><br/> Current date: <xsl:value-of select="$Today"/><br/> <br/> </xsl:template> </xsl:stylesheet> 

No error, but I dont see a date. The variable looks empty.

1 Answer 1

0

UPDATE and workaround : SharePoint still uses the XSLT 1.0 spec (as of SharePoint 2010) so XSLT 2.0 functionality won't help.(ddwrt:Today() or ddwrt:TodayIso()) . So workaround is you add a DVWP to the page in SharePoint Designer, SPD defined a variable which contains the current date for you in the ParameterBindings section:

<ParameterBinding Name="Today" Location="CAMLVariable" DefaultValue="CurrentDate"/> 

Be sure to declare Today as a param at the top of the stylesheet:

<xsl:param name="Today" /> 

Then you can use $Today however you need it.

The ddwrt:Today() function is also useful, but there's no real need for it when SPD is already handing you the value.

9
  • Hi Nikhil, thank you very much for your fast answer. I try your solution but it didnt work. Could you please test your xsl code in an xml viewer webpart. I realy need this work. Please use my xml and xsl like in my start topic. Commented Aug 7, 2014 at 19:19
  • sharepoint.stackexchange.com/questions/28805/… Commented Aug 7, 2014 at 19:33
  • Hi Nikhil, I have read this page. But they are talking about if you have the latest updates thiss issue occurs. And that they have builded these webpart programmatically. Is this the only solution? No other way without development? Commented Aug 7, 2014 at 19:54
  • Ok let me try once on my box . Commented Aug 7, 2014 at 19:56
  • 1
    I have created my own visual webpart. Commented Aug 11, 2014 at 8:22

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.