{"id":62,"date":"2011-05-30T04:48:00","date_gmt":"2011-05-30T04:48:00","guid":{"rendered":"\/lisa\/post\/2011\/05\/30\/YAPS-on-SSRS-Documentation-the-Lite-version.aspx"},"modified":"2011-05-30T04:48:00","modified_gmt":"2011-05-30T04:48:00","slug":"yaps-on-ssrs-documentation-the-lite-version","status":"publish","type":"post","link":"https:\/\/spacefold.com\/lisa\/2011\/05\/30\/yaps-on-ssrs-documentation-the-lite-version\/","title":{"rendered":"YAPS on SSRS Documentation: the Lite version"},"content":{"rendered":"<p>The fully-loaded version of <a title=\"blog post on updated xmlRSDocs\" href=\"\/lisa\/2011\/02\/27\/What-a-difference-a-year-and-a-job-change-make\/\">xmlRSDocs<\/a> is invaluable in my work, because it allows me to ferret out every last technical detail about the RDLs on an SSRS Server.&nbsp;<\/p>\n<p>However, when I just want my users to have an idea of the reports available to them in Report Manager,&nbsp;running xmlRSDocs is&nbsp;overkill.&nbsp;&nbsp;I don&#8217;t need to do an&nbsp;SSIS loop through all the reports in ReportServer.dbo.Catalog, to download the RDL file and parse it. &nbsp;I just want to list the available reports in some organized fashion.<\/p>\n<p>If the report developers in my organization took the time to use the Description when they deployed reports, this generated list would probably have everything users needed&#8230; but they don&#8217;t.<\/p>\n<p>What I really need to do is provide a skeletal document, maybe in Excel or Word, or in HTML suitable for a wiki page. This generated document will get filled in with descriptive content by other personnel.&nbsp;<\/p>\n<p>I can add a bit more generated content, including Description if there is one, and I can generate a formatted Parameters list, and page orientation (using dbo.Catalog&#8217;s&nbsp;Property column).<\/p>\n<h2>QnD SSRS User Docs: one query, a trivial xslt<\/h2>\n<p>This idea turned out to be pretty easy to implement,&nbsp;using the following query, which translates the results into&nbsp;reasonably-formulated XML using the FOR XML PATH syntax in T-SQL:<\/p>\n<p class=\"code\">&nbsp;<br \/> <span style=\"color: #0000ff;\"> select <\/span> <br \/>&nbsp;&nbsp; u1<span style=\"color: #808080;\">.<\/span>UserName  <span style=\"color: #0000ff;\">As<\/span> Creator<span style=\"color: #808080;\">,<\/span> u2 <span style=\"color: #808080;\">.<\/span>UserName <span style=\"color: #0000ff;\">As<\/span> Modifier<span style=\"color: #808080;\">,<\/span><br \/> <span style=\"color: #0000ff;\">&nbsp;&nbsp; Path<\/span><span style=\"color: #808080;\">,<\/span> Name<span style=\"color: #808080;\">,<\/span> ItemID<span style=\"color: #808080;\">,<\/span> ParentID<span style=\"color: #808080;\">,<\/span> <br \/> <span style=\"color: #0000ff;\">&nbsp;&nbsp; Type<\/span><span style=\"color: #808080;\">,<\/span> <span style=\"color: #0000ff;\">Description<\/span><span style=\"color: #808080;\">,<\/span> Hidden<span style=\"color: #808080;\">,<\/span> <br \/> &nbsp;&nbsp; CreationDate<span style=\"color: #808080;\">,<\/span> ModifiedDate<span style=\"color: #808080;\">,<\/span> MimeType<span style=\"color: #808080;\">,<\/span> <br \/> &nbsp;&nbsp; ExecutionFlag <span style=\"color: #808080;\">,<\/span> ExecutionTime<span style=\"color: #808080;\">,<\/span> SubType<span style=\"color: #808080;\">,<\/span><br \/><span style=\"color: #ff00ff;\"> <span style=\"color: #ff00ff;\">&nbsp;&nbsp; cast<\/span><span style=\"color: #808080;\">(<\/span>Property    <span style=\"color: #0000ff;\">as<\/span> <span style=\"color: #0000ff;\">xml<\/span><span style=\"color: #808080;\">),<\/span> <span style=\"color: #008000;\"> &nbsp; <span style=\"color: #008000;\">&#8212; you need    to cast to get rid of the&nbsp;<\/span><br \/> <span style=\"color: #008000;\"><span style=\"color: #008000;\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;    &#8212; yucky escaped text in the ntext column!!<\/span><span style=\"color: #008000;\"><br \/> <span style=\"color: #ff00ff;\"><span style=\"color: #ff00ff;\">&nbsp;&nbsp; cast<\/span><span style=\"color: #808080;\">(<\/span>Parameter    <span style=\"color: #0000ff;\">as<\/span> <span style=\"color: #0000ff;\">xml<\/span><span style=\"color: #808080;\">)<\/span>&nbsp;&nbsp;&nbsp; <span style=\"color: #008000;\"><span style=\"color: #008000;\">&#8212; ditto here<\/span><br \/> <span style=\"color: #008000;\"><span style=\"color: #0000ff;\"> from<\/span><\/span> <span style=\"color: #0000ff;\">Catalog<\/span> <br \/> <span style=\"color: #808080;\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; join <\/span><\/span> Users u1 <span style=\"color: #0000ff;\">on<\/span> <span style=\"color: #0000ff;\">Catalog<\/span><span style=\"color: #808080;\">.<\/span>CreatedByID    <span style=\"color: #808080;\">=<\/span> u1<span style=\"color: #808080;\">.<\/span>UserID<br \/> <span style=\"color: #808080;\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; join <\/span><\/span> <span style=\"color: #ff00ff;\">Users u2 <\/span><span style=\"color: #0000ff;\">on<\/span> <span style=\"color: #0000ff;\">Catalog<\/span><span style=\"color: #808080;\">.<\/span><span style=\"color: #ff00ff;\">CreatedByID    <span style=\"color: #808080;\">=<\/span> u2<span style=\"color: #808080;\">.<\/span>UserID<\/span><br \/> <span style=\"color: #0000ff;\"> for <\/span><\/span> <span style=\"color: #0000ff;\">xml<\/span> <span style=\"color: #0000ff;\">path <\/span><span style=\"color: #808080;\">(<\/span><span style=\"color: #ff0000;\">&#8216;row&#8217;<\/span><span style=\"color: #808080;\">),<\/span> <span style=\"color: #0000ff;\">root<\/span> <span style=\"color: #008000;\"><span style=\"color: #008000;\">&#8212;    row is actually the default, but<\/span><br \/> <span style=\"color: #008000;\"><span style=\"color: #008000;\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;    <span style=\"color: #008000;\">&#8212; I&#8217;m making it explicit because<\/span><br \/> <span style=\"color: #008000;\">&nbsp;<span style=\"color: #008000;\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;    &#8212; I&#8217;m using it explicitly in the xslt example.<br \/> <span style=\"color: #008000;\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;    &#8212; At no place in the xslt do I explicitly<br \/> <span style=\"color: #008000;\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;    &#8212; use the root node name, so I won&#8217;t bother<br \/> <span style=\"color: #008000;\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;    &#8212; specifying that one.<br \/> <\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/p>\n<p>This simple query plus a little XSLT for whatever output I want is enough to do the trick.&nbsp;<\/p>\n<p>Here&#8217;s a sample XSLT, showing you how to recursively &#8220;visit&#8221; all the reports in the server folders; here, we&#8217;re nesting &lt;UL&gt; elements that would match the server folder organization for our wiki page:<\/p>\n<p class=\"code\"><span class=\"c9Y6TC\"><span style=\"color: #0000ff;\">&lt;<\/span><\/span><span class=\"c194KG\"><span style=\"color: #602020;\">?xml version=&#8221;1.0&#8243;?<\/span><\/span><span style=\"color: #0000ff;\"><span class=\"c9Y6TC\">&gt;<\/span><br \/><\/span> <span class=\"c9Y6TC\"><span style=\"color: #0000ff;\">&lt;<\/span><\/span><span class=\"c49DIK\"><span style=\"color: #ac306d;\">xsl:stylesheet <\/span><\/span><span class=\"c18YC0\"><span style=\"color: #d00020;\">version=<\/span><\/span><span class=\"c5M9S0\"><span style=\"color: #000090;\">&#8220;1.0&#8221;<\/span><\/span><span class=\"c18YC0\"><span style=\"color: #d00020;\"> xmlns:xsl=<\/span><\/span><span class=\"c5M9S0\"><span style=\"color: #000090;\">&#8220;http:\/\/www.w3.org\/1999\/XSL\/Transform&#8221;<\/span><\/span><span style=\"color: #0000ff;\"><span class=\"c9Y6TC\">&gt;<\/span><br \/><\/span>&nbsp;&nbsp;&nbsp;<span class=\"c9Y6TC\"><span style=\"color: #0000ff;\">&lt;<\/span><\/span><span class=\"c49DIK\"><span style=\"color: #ac306d;\">xsl:output <\/span><\/span><span class=\"c18YC0\"><span style=\"color: #d00020;\">method=<\/span><\/span><span class=\"c5M9S0\"><span style=\"color: #000090;\">&#8220;html&#8221;<\/span><\/span><span class=\"c18YC0\"><span style=\"color: #d00020;\">\/<\/span><\/span><span style=\"color: #0000ff;\"><span class=\"c9Y6TC\">&gt;<\/span><br \/><\/span> &nbsp;<br \/>&nbsp;&nbsp;&nbsp;<span class=\"c9Y6TC\"><span style=\"color: #0000ff;\">&lt;<\/span><\/span><span class=\"c49DIK\"><span style=\"color: #ac306d;\">xsl:template <\/span><\/span><span class=\"c18YC0\"><span style=\"color: #d00020;\">match=<\/span><\/span><span class=\"c5M9S0\"><span style=\"color: #000090;\">&#8220;\/&#8221;<\/span><\/span><span style=\"color: #0000ff;\"><span class=\"c9Y6TC\">&gt;<\/span><br \/><\/span> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"c9Y6TC\"><span style=\"color: #0000ff;\">&lt;<\/span><\/span><span class=\"c69ORU\"><span style=\"color: #aaaba0;\">!&#8211; we&#8217;re going to recursively go through the tree starting from the root node &#8212;<\/span><\/span><span style=\"color: #0000ff;\"><span class=\"c9Y6TC\">&gt;<\/span><br \/><\/span> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"c9Y6TC\"><span style=\"color: #0000ff;\">&lt;<\/span><\/span><span class=\"c49DIK\"><span style=\"color: #ac306d;\">xsl:apply-templates <\/span><\/span><span class=\"c18YC0\"><span style=\"color: #d00020;\">select=<\/span><\/span><span class=\"c5M9S0\"><span style=\"color: #000090;\">&#8220;\/*\/row[not(ParentID)]&#8221;<\/span><\/span><span class=\"c18YC0\"><span style=\"color: #d00020;\"> mode=<\/span><\/span><span class=\"c5M9S0\"><span style=\"color: #000090;\">&#8220;folder&#8221;<\/span><\/span><span class=\"c18YC0\"><span style=\"color: #d00020;\">\/<\/span><\/span><span style=\"color: #0000ff;\"><span class=\"c9Y6TC\">&gt;<\/span><br \/><\/span> &nbsp;&nbsp;&nbsp;&nbsp;<span class=\"c9Y6TC\"><span style=\"color: #0000ff;\">&lt;<\/span><\/span><span class=\"c49DIK\"><span style=\"color: #ac306d;\">\/xsl:template<\/span><\/span><span style=\"color: #0000ff;\"><span class=\"c9Y6TC\">&gt;<\/span><br \/><\/span> <br \/> &nbsp;&nbsp;&nbsp;&nbsp;<span class=\"c9Y6TC\"><span style=\"color: #0000ff;\">&lt;<\/span><\/span><span class=\"c49DIK\"><span style=\"color: #ac306d;\">xsl:template <\/span><\/span><span class=\"c18YC0\"><span style=\"color: #d00020;\">mode=<\/span><\/span><span class=\"c5M9S0\"><span style=\"color: #000090;\">&#8220;folder&#8221;<\/span><\/span><span class=\"c18YC0\"><span style=\"color: #d00020;\"> match=<\/span><\/span><span class=\"c5M9S0\"><span style=\"color: #000090;\">&#8220;row&#8221;<\/span><\/span><span style=\"color: #0000ff;\"><span class=\"c9Y6TC\">&gt;<\/span><br \/><\/span> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"c9Y6TC\"><span style=\"color: #0000ff;\">&lt;<\/span><\/span><span class=\"c49DIK\"><span style=\"color: #ac306d;\">xsl:param <\/span><\/span><span class=\"c18YC0\"><span style=\"color: #d00020;\">name=<\/span><\/span><span class=\"c5M9S0\"><span style=\"color: #000090;\">&#8220;thisFolder&#8221;<\/span><\/span><span class=\"c18YC0\"><span style=\"color: #d00020;\"> select=<\/span><\/span><span class=\"c5M9S0\"><span style=\"color: #000090;\">&#8220;.\/ItemID&#8221;<\/span><\/span><span class=\"c18YC0\"><span style=\"color: #d00020;\">\/<\/span><\/span><span style=\"color: #0000ff;\"><span class=\"c9Y6TC\">&gt;<\/span><br \/><\/span> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"c9Y6TC\"><span style=\"color: #0000ff;\">&lt;<\/span><\/span><span class=\"cKJK\"><span style=\"color: #006800;\">ul<\/span><\/span><span style=\"color: #0000ff;\"><span class=\"c9Y6TC\">&gt;<\/span><br \/><\/span> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"c9Y6TC\"><span style=\"color: #0000ff;\">&lt;<\/span><\/span><span class=\"cKJK\"><span style=\"color: #006800;\">li<\/span><\/span><span style=\"color: #0000ff;\"><span class=\"c9Y6TC\">&gt;<\/span><br \/><\/span> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"c9Y6TC\"><span style=\"color: #0000ff;\">&lt;<\/span><\/span><span class=\"c49DIK\"><span style=\"color: #ac306d;\">xsl:if <\/span><\/span><span class=\"c18YC0\"><span style=\"color: #d00020;\">test=<\/span><\/span><span class=\"c5M9S0\"><span style=\"color: #000090;\">&#8220;not(ParentID)&#8221;<\/span><\/span><span class=\"c9Y6TC\"><span style=\"color: #0000ff;\">&gt;<\/span><\/span>ROOT <span class=\"c9Y6TC\"><span style=\"color: #0000ff;\">&lt;<\/span><\/span><span class=\"c49DIK\"><span style=\"color: #ac306d;\">\/xsl:if<\/span><\/span><span class=\"c9Y6TC\"><span style=\"color: #0000ff;\">&gt;<\/span><\/span>Folder <br \/> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"c9Y6TC\"><span style=\"color: #0000ff;\">&lt;<\/span><\/span><span class=\"c49DIK\"><span style=\"color: #ac306d;\">xsl:apply-templates <\/span><\/span><span class=\"c18YC0\"><span style=\"color: #d00020;\">mode=<\/span><\/span><span class=\"c5M9S0\"><span style=\"color: #000090;\">&#8220;item&#8221;<\/span><\/span><span class=\"c18YC0\"><span style=\"color: #d00020;\"> select=<\/span><\/span><span class=\"c5M9S0\"><span style=\"color: #000090;\">&#8220;.&#8221;<\/span><\/span><span class=\"c18YC0\"><span style=\"color: #d00020;\">\/<\/span><\/span><span style=\"color: #0000ff;\"><span class=\"c9Y6TC\">&gt;<\/span><br \/><\/span> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"c9Y6TC\"><span style=\"color: #0000ff;\">&lt;<\/span><\/span><span class=\"c49DIK\"><span style=\"color: #ac306d;\">xsl:apply-templates <\/span><\/span><span class=\"c18YC0\"><span style=\"color: #d00020;\">select=<\/span><\/span><span class=\"c5M9S0\"><span style=\"color: #000090;\">&#8220;\/*\/row[ParentID=$thisFolder and Type=&#8217;1&#8242;]&#8221;<\/span><\/span><span class=\"c18YC0\"><span style=\"color: #d00020;\"> <br \/> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mode=<\/span><\/span><span class=\"c5M9S0\"><span style=\"color: #000090;\">&#8220;folder&#8221;<\/span><\/span><span class=\"c18YC0\"><span style=\"color: #d00020;\">\/<\/span><\/span><span style=\"color: #0000ff;\"><span class=\"c9Y6TC\">&gt;<\/span><br \/><\/span> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"c9Y6TC\"><span style=\"color: #0000ff;\">&lt;<\/span><\/span><span class=\"c49DIK\"><span style=\"color: #ac306d;\">xsl:if <\/span><\/span><span class=\"c18YC0\"><span style=\"color: #d00020;\">test=<\/span><\/span><span class=\"c5M9S0\"><span style=\"color: #000090;\">&#8220;\/*\/row[ParentID=$thisFolder and Type != &#8216;1&#8217;]&#8221;<\/span><\/span><span style=\"color: #0000ff;\"><span class=\"c9Y6TC\">&gt;<\/span><br \/><\/span> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"c9Y6TC\"><span style=\"color: #0000ff;\">&lt;<\/span><\/span><span class=\"cKJK\"><span style=\"color: #006800;\">ul<\/span><\/span><span style=\"color: #0000ff;\"><span class=\"c9Y6TC\">&gt;<\/span><br \/><\/span> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"c9Y6TC\"><span style=\"color: #0000ff;\">&lt;<\/span><\/span><span class=\"c49DIK\"><span style=\"color: #ac306d;\">xsl:apply-templates <\/span><\/span><span class=\"c18YC0\"><span style=\"color: #d00020;\">select=<\/span><\/span><span class=\"c5M9S0\"><span style=\"color: #000090;\">&#8220;\/*\/row[ParentID=$thisFolder and Type=&#8217;2&#8242;]&#8221;<\/span><\/span><span class=\"c18YC0\"><span style=\"color: #d00020;\"> <br \/> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mode=<\/span><\/span><span class=\"c5M9S0\"><span style=\"color: #000090;\">&#8220;report&#8221;<\/span><\/span><span class=\"c18YC0\"><span style=\"color: #d00020;\">\/<\/span><\/span><span style=\"color: #0000ff;\"><span class=\"c9Y6TC\">&gt;<\/span><br \/><\/span> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"c9Y6TC\"><span style=\"color: #0000ff;\">&lt;<\/span><\/span><span class=\"c49DIK\"><span style=\"color: #ac306d;\">xsl:apply-templates <\/span><\/span><span class=\"c18YC0\"><span style=\"color: #d00020;\">select=<\/span><\/span><span class=\"c5M9S0\"><span style=\"color: #000090;\">&#8220;\/*\/row[ParentID=$thisFolder and Type=&#8217;5&#8242;]&#8221;<\/span><\/span><span class=\"c18YC0\"><span style=\"color: #d00020;\"> <br \/> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mode=<\/span><\/span><span class=\"c5M9S0\"><span style=\"color: #000090;\">&#8220;datasource&#8221;<\/span><\/span><span class=\"c18YC0\"><span style=\"color: #d00020;\">\/<\/span><\/span><span style=\"color: #0000ff;\"><span class=\"c9Y6TC\">&gt;<\/span><br \/><\/span> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"c9Y6TC\"><span style=\"color: #0000ff;\">&lt;<\/span><\/span><span class=\"cKJK\"><span style=\"color: #006800;\">\/ul<\/span><\/span><span style=\"color: #0000ff;\"><span class=\"c9Y6TC\">&gt;<\/span><br \/><\/span> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"c9Y6TC\"><span style=\"color: #0000ff;\">&lt;<\/span><\/span><span class=\"c49DIK\"><span style=\"color: #ac306d;\">\/xsl:if<\/span><\/span><span style=\"color: #0000ff;\"><span class=\"c9Y6TC\">&gt;<\/span><br \/><\/span> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"c9Y6TC\"><span style=\"color: #0000ff;\">&lt;<\/span><\/span><span class=\"cKJK\"><span style=\"color: #006800;\">\/li<\/span><\/span><span style=\"color: #0000ff;\"><span class=\"c9Y6TC\">&gt;<\/span><br \/><\/span> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"c9Y6TC\"><span style=\"color: #0000ff;\">&lt;<\/span><\/span><span class=\"cKJK\"><span style=\"color: #006800;\">\/ul<\/span><\/span><span style=\"color: #0000ff;\"><span class=\"c9Y6TC\">&gt;<\/span><br \/><\/span> &nbsp;&nbsp;&nbsp;&nbsp;<span class=\"c9Y6TC\"><span style=\"color: #0000ff;\">&lt;<\/span><\/span><span class=\"c49DIK\"><span style=\"color: #ac306d;\">\/xsl:template<\/span><\/span><span style=\"color: #0000ff;\"><span class=\"c9Y6TC\">&gt;<\/span><br \/><\/span> <br \/> &nbsp;&nbsp;&nbsp;&nbsp;<span class=\"c9Y6TC\"><span style=\"color: #0000ff;\">&lt;<\/span><\/span><span class=\"c49DIK\"><span style=\"color: #ac306d;\">xsl:template <\/span><\/span><span class=\"c18YC0\"><span style=\"color: #d00020;\">match=<\/span><\/span><span class=\"c5M9S0\"><span style=\"color: #000090;\">&#8220;row&#8221;<\/span><\/span><span class=\"c18YC0\"><span style=\"color: #d00020;\"> mode=<\/span><\/span><span class=\"c5M9S0\"><span style=\"color: #000090;\">&#8220;report&#8221;<\/span><\/span><span style=\"color: #0000ff;\"><span class=\"c9Y6TC\">&gt;<\/span><br \/><\/span> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"c9Y6TC\"><span style=\"color: #0000ff;\">&lt;<\/span><\/span><span class=\"cKJK\"><span style=\"color: #006800;\">li<\/span><\/span><span style=\"color: #0000ff;\"><span class=\"c9Y6TC\">&gt;<\/span><br \/><\/span> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"c9Y6TC\"><span style=\"color: #0000ff;\">&lt;<\/span><\/span><span class=\"cLUY2\"><span style=\"color: #ea8f0f;\">font <\/span><\/span><span class=\"c18YC0\"><span style=\"color: #d00020;\">color=<\/span><\/span><span class=\"c5M9S0\"><span style=\"color: #000090;\">&#8220;green&#8221;<\/span><\/span><span class=\"c9Y6TC\"><span style=\"color: #0000ff;\">&gt;<\/span><\/span>Report<span class=\"c9Y6TC\"><span style=\"color: #0000ff;\">&lt;<\/span><\/span><span class=\"cLUY2\"><span style=\"color: #ea8f0f;\">\/font<\/span><\/span><span class=\"c9Y6TC\"><span style=\"color: #0000ff;\">&gt;<\/span><\/span>: <br \/> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"c9Y6TC\"><span style=\"color: #0000ff;\">&lt;<\/span><\/span><span class=\"c49DIK\"><span style=\"color: #ac306d;\">xsl:apply-templates <\/span><\/span><span class=\"c18YC0\"><span style=\"color: #d00020;\">select=<\/span><\/span><span class=\"c5M9S0\"><span style=\"color: #000090;\">&#8220;.&#8221;<\/span><\/span><span class=\"c18YC0\"><span style=\"color: #d00020;\"> mode=<\/span><\/span><span class=\"c5M9S0\"><span style=\"color: #000090;\">&#8220;item&#8221;<\/span><\/span><span class=\"c18YC0\"><span style=\"color: #d00020;\">\/<\/span><\/span><span style=\"color: #0000ff;\"><span class=\"c9Y6TC\">&gt;<\/span><br \/><\/span> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"c9Y6TC\"><span style=\"color: #0000ff;\">&lt;<\/span><\/span><span class=\"c49DIK\"><span style=\"color: #ac306d;\">xsl:apply-templates <\/span><\/span><span class=\"c18YC0\"><span style=\"color: #d00020;\">select=<\/span><\/span><span class=\"c5M9S0\"><span style=\"color: #000090;\">&#8220;.\/Parameters&#8221;<\/span><\/span><span class=\"c18YC0\"><span style=\"color: #d00020;\">\/<\/span><\/span><span style=\"color: #0000ff;\"><span class=\"c9Y6TC\">&gt;<\/span><br \/><\/span> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"c9Y6TC\"><span style=\"color: #0000ff;\">&lt;<\/span><\/span><span class=\"c49DIK\"><span style=\"color: #ac306d;\">xsl:apply-templates <\/span><\/span><span class=\"c18YC0\"><span style=\"color: #d00020;\">select=<\/span><\/span><span class=\"c5M9S0\"><span style=\"color: #000090;\">&#8220;.\/Properties&#8221;<\/span><\/span><span class=\"c18YC0\"><span style=\"color: #d00020;\">\/<\/span><\/span><span style=\"color: #0000ff;\"><span class=\"c9Y6TC\">&gt;<\/span><br \/><\/span> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"c9Y6TC\"><span style=\"color: #0000ff;\">&lt;<\/span><\/span><span class=\"cKJK\"><span style=\"color: #006800;\">\/li<\/span><\/span><span style=\"color: #0000ff;\"><span class=\"c9Y6TC\">&gt;<\/span><br \/><\/span> &nbsp;&nbsp;&nbsp;&nbsp;<span class=\"c9Y6TC\"><span style=\"color: #0000ff;\">&lt;<\/span><\/span><span class=\"c49DIK\"><span style=\"color: #ac306d;\">\/xsl:template<\/span><\/span><span style=\"color: #0000ff;\"><span class=\"c9Y6TC\">&gt;<\/span><br \/><\/span> <br \/> &nbsp;&nbsp;&nbsp;&nbsp;<span class=\"c9Y6TC\"><span style=\"color: #0000ff;\">&lt;<\/span><\/span><span class=\"c49DIK\"><span style=\"color: #ac306d;\">xsl:template <\/span><\/span><span class=\"c18YC0\"><span style=\"color: #d00020;\">match=<\/span><\/span><span class=\"c5M9S0\"><span style=\"color: #000090;\">&#8220;row&#8221;<\/span><\/span><span class=\"c18YC0\"><span style=\"color: #d00020;\"> mode=<\/span><\/span><span class=\"c5M9S0\"><span style=\"color: #000090;\">&#8220;datasource&#8221;<\/span><\/span><span style=\"color: #0000ff;\"><span class=\"c9Y6TC\">&gt;<\/span><br \/><\/span> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"c9Y6TC\"><span style=\"color: #0000ff;\">&lt;<\/span><\/span><span class=\"c69ORU\"><span style=\"color: #aaaba0;\">!&#8211; TBD: more detail &#8212;<\/span><\/span><span style=\"color: #0000ff;\"><span class=\"c9Y6TC\">&gt;<\/span><br \/><\/span> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"c9Y6TC\"><span style=\"color: #0000ff;\">&lt;<\/span><\/span><span class=\"cKJK\"><span style=\"color: #006800;\">li<\/span><\/span><span class=\"c9Y6TC\"><span style=\"color: #0000ff;\">&gt;&lt;<\/span><\/span><span class=\"cLUY2\"><span style=\"color: #ea8f0f;\">font <\/span><\/span><span class=\"c18YC0\"><span style=\"color: #d00020;\">color=<\/span><\/span><span class=\"c5M9S0\"><span style=\"color: #000090;\">&#8220;blue&#8221;<\/span><\/span><span class=\"c9Y6TC\"><span style=\"color: #0000ff;\">&gt;<\/span><\/span>Datasource<span class=\"c9Y6TC\"><span style=\"color: #0000ff;\">&lt;<\/span><\/span><span class=\"cLUY2\"><span style=\"color: #ea8f0f;\">\/font<\/span><\/span><span class=\"c9Y6TC\"><span style=\"color: #0000ff;\">&gt;<\/span><\/span>: <br \/> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"c9Y6TC\"><span style=\"color: #0000ff;\">&lt;<\/span><\/span><span class=\"c49DIK\"><span style=\"color: #ac306d;\">xsl:apply-templates <\/span><\/span><span class=\"c18YC0\"><span style=\"color: #d00020;\">select=<\/span><\/span><span class=\"c5M9S0\"><span style=\"color: #000090;\">&#8220;.&#8221;<\/span><\/span><span class=\"c18YC0\"><span style=\"color: #d00020;\"> mode=<\/span><\/span><span class=\"c5M9S0\"><span style=\"color: #000090;\">&#8220;item&#8221;<\/span><\/span><span class=\"c18YC0\"><span style=\"color: #d00020;\">\/<\/span><\/span><span class=\"c9Y6TC\"><span style=\"color: #0000ff;\">&gt;&lt;<\/span><\/span><span class=\"cKJK\"><span style=\"color: #006800;\">\/li<\/span><\/span><span style=\"color: #0000ff;\"><span class=\"c9Y6TC\">&gt;<\/span><br \/><\/span> &nbsp;&nbsp;&nbsp;&nbsp;<span class=\"c9Y6TC\"><span style=\"color: #0000ff;\">&lt;<\/span><\/span><span class=\"c49DIK\"><span style=\"color: #ac306d;\">\/xsl:template<\/span><\/span><span style=\"color: #0000ff;\"><span class=\"c9Y6TC\">&gt;<\/span><br \/><\/span> <br \/> &nbsp;&nbsp;&nbsp;&nbsp;<span class=\"c9Y6TC\"><span style=\"color: #0000ff;\">&lt;<\/span><\/span><span class=\"c49DIK\"><span style=\"color: #ac306d;\">xsl:template <\/span><\/span><span class=\"c18YC0\"><span style=\"color: #d00020;\">match=<\/span><\/span><span class=\"c5M9S0\"><span style=\"color: #000090;\">&#8220;row&#8221;<\/span><\/span><span class=\"c18YC0\"><span style=\"color: #d00020;\"> mode=<\/span><\/span><span class=\"c5M9S0\"><span style=\"color: #000090;\">&#8220;item&#8221;<\/span><\/span><span style=\"color: #0000ff;\"><span class=\"c9Y6TC\">&gt;<\/span><br \/><\/span> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"c9Y6TC\"><span style=\"color: #0000ff;\">&lt;<\/span><\/span><span class=\"c49DIK\"><span style=\"color: #ac306d;\">xsl:value-of <\/span><\/span><span class=\"c18YC0\"><span style=\"color: #d00020;\">select=<\/span><\/span><span class=\"c5M9S0\"><span style=\"color: #000090;\">&#8220;.\/Name&#8221;<\/span><\/span><span class=\"c18YC0\"><span style=\"color: #d00020;\">\/<\/span><\/span><span class=\"c9Y6TC\"><span style=\"color: #0000ff;\">&gt;<\/span><\/span> <br \/> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"c9Y6TC\"><span style=\"color: #0000ff;\">&lt;<\/span><\/span><span class=\"cLUY2\"><span style=\"color: #ea8f0f;\">font <\/span><\/span><span class=\"c18YC0\"><span style=\"color: #d00020;\">size=<\/span><\/span><span class=\"c5M9S0\"><span style=\"color: #000090;\">&#8220;-1&#8221;<\/span><\/span><span style=\"color: #0000ff;\"><span class=\"c9Y6TC\">&gt;<\/span><br \/><\/span> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"c9Y6TC\"><span style=\"color: #0000ff;\">&lt;<\/span><\/span><span class=\"c49DIK\"><span style=\"color: #ac306d;\">xsl:if <\/span><\/span><span class=\"c18YC0\"><span style=\"color: #d00020;\">test=<\/span><\/span><span class=\"c5M9S0\"><span style=\"color: #000090;\">&#8220;.\/Hidden=&#8217;1&#8242;&#8221;<\/span><\/span><span style=\"color: #0000ff;\"><span class=\"c9Y6TC\">&gt;<\/span><br \/><\/span> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"c9Y6TC\"><span style=\"color: #0000ff;\">&lt;<\/span><\/span><span class=\"cLUY2\"><span style=\"color: #ea8f0f;\">font <\/span><\/span><span class=\"c18YC0\"><span style=\"color: #d00020;\">color=<\/span><\/span><span class=\"c5M9S0\"><span style=\"color: #000090;\">&#8220;red&#8221;<\/span><\/span><span class=\"c9Y6TC\"><span style=\"color: #0000ff;\">&gt;&lt;<\/span><\/span><span class=\"cKJK\"><span style=\"color: #006800;\">em<\/span><\/span><span class=\"c9Y6TC\"><span style=\"color: #0000ff;\">&gt;<\/span><\/span> Hidden<span class=\"c9Y6TC\"><span style=\"color: #0000ff;\">&lt;<\/span><\/span><span class=\"cKJK\"><span style=\"color: #006800;\">\/em<\/span><\/span><span class=\"c9Y6TC\"><span style=\"color: #0000ff;\">&gt;&lt;<\/span><\/span><span class=\"cLUY2\"><span style=\"color: #ea8f0f;\">\/font<\/span><\/span><span style=\"color: #0000ff;\"><span class=\"c9Y6TC\">&gt;<\/span><br \/><\/span> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"c9Y6TC\"><span style=\"color: #0000ff;\">&lt;<\/span><\/span><span class=\"c49DIK\"><span style=\"color: #ac306d;\">\/xsl:if<\/span><\/span><span style=\"color: #0000ff;\"><span class=\"c9Y6TC\">&gt;<\/span><br \/><\/span> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"c9Y6TC\"><span style=\"color: #0000ff;\">&lt;<\/span><\/span><span class=\"cKJK\"><span style=\"color: #006800;\">br\/<\/span><\/span><span style=\"color: #0000ff;\"><span class=\"c9Y6TC\">&gt;<\/span><br \/><\/span> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;created by <span class=\"c9Y6TC\"><span style=\"color: #0000ff;\">&lt;<\/span><\/span><span class=\"c49DIK\"><span style=\"color: #ac306d;\">xsl:value-of <\/span><\/span><span class=\"c18YC0\"><span style=\"color: #d00020;\">select=<\/span><\/span><span class=\"c5M9S0\"><span style=\"color: #000090;\">&#8220;.\/Creator&#8221;<\/span><\/span><span class=\"c18YC0\"><span style=\"color: #d00020;\">\/<\/span><\/span><span class=\"c9Y6TC\"><span style=\"color: #0000ff;\">&gt;<\/span><\/span> on <br \/> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"c9Y6TC\"><span style=\"color: #0000ff;\">&lt;<\/span><\/span><span class=\"c49DIK\"><span style=\"color: #ac306d;\">xsl:value-of <\/span><\/span><span class=\"c18YC0\"><span style=\"color: #d00020;\">select=<\/span><\/span><span class=\"c5M9S0\"><span style=\"color: #000090;\">&#8220;substring-before(.\/CreationDate,&#8217;T&#8217;)&#8221;<\/span><\/span><span class=\"c18YC0\"><span style=\"color: #d00020;\">\/<\/span><\/span><span class=\"c9Y6TC\"><span style=\"color: #0000ff;\">&gt;&nbsp;<span style=\"color: #000000;\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span class=\"c9Y6TC\"><span style=\"color: #0000ff;\">&lt;<\/span><\/span><span class=\"c69ORU\"><span style=\"color: #aaaba0;\">!&#8211;&nbsp;etc&nbsp;&#8212;<\/span><\/span><span style=\"color: #0000ff;\"><span class=\"c9Y6TC\">&gt;<\/span><\/span><span style=\"color: #000000;\">&nbsp;<\/span><br \/><\/span><\/span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"c9Y6TC\"><span style=\"color: #0000ff;\">&lt;<\/span><\/span><span class=\"c49DIK\"><span style=\"color: #ac306d;\">xsl:if <\/span><\/span><span class=\"c18YC0\"><span style=\"color: #d00020;\">test=<\/span><\/span><span class=\"c5M9S0\"><span style=\"color: #000090;\">&#8220;string-length(normalize-space(.\/Description)) &amp;gt; 1&#8221;<\/span><\/span><span style=\"color: #0000ff;\"><span class=\"c9Y6TC\">&gt;<\/span><br \/><\/span> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"c9Y6TC\"><span style=\"color: #0000ff;\">&lt;<\/span><\/span><span class=\"cKJK\"><span style=\"color: #006800;\">br\/<\/span><\/span><span class=\"c9Y6TC\"><span style=\"color: #0000ff;\">&gt;&lt;<\/span><\/span><span class=\"cKJK\"><span style=\"color: #006800;\">em<\/span><\/span><span class=\"c9Y6TC\"><span style=\"color: #0000ff;\">&gt;&lt;<\/span><\/span><span class=\"c49DIK\"><span style=\"color: #ac306d;\">xsl:value-of <\/span><\/span><span class=\"c18YC0\"><span style=\"color: #d00020;\">select=<\/span><\/span><span class=\"c5M9S0\"><span style=\"color: #000090;\">&#8220;Description&#8221;<\/span><\/span><span class=\"c18YC0\"><span style=\"color: #d00020;\">\/<\/span><\/span><span class=\"c9Y6TC\"><span style=\"color: #0000ff;\">&gt;&lt;<\/span><\/span><span class=\"cKJK\"><span style=\"color: #006800;\">\/em<\/span><\/span><span style=\"color: #0000ff;\"><span class=\"c9Y6TC\">&gt;<\/span><br \/><\/span> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"c9Y6TC\"><span style=\"color: #0000ff;\">&lt;<\/span><\/span><span class=\"c49DIK\"><span style=\"color: #ac306d;\">\/xsl:if<\/span><\/span><span style=\"color: #0000ff;\"><span class=\"c9Y6TC\">&gt;<\/span><br \/><\/span> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"c9Y6TC\"><span style=\"color: #0000ff;\">&lt;<\/span><\/span><span class=\"cLUY2\"><span style=\"color: #ea8f0f;\">\/font<\/span><\/span><span style=\"color: #0000ff;\"><span class=\"c9Y6TC\">&gt;<\/span><br \/><\/span> &nbsp;&nbsp;&nbsp;&nbsp;<span class=\"c9Y6TC\"><span style=\"color: #0000ff;\">&lt;<\/span><\/span><span class=\"c49DIK\"><span style=\"color: #ac306d;\">\/xsl:template<\/span><\/span><span style=\"color: #0000ff;\"><span class=\"c9Y6TC\">&gt;<\/span><br \/><\/span> <br \/> &nbsp;&nbsp;&nbsp;&nbsp;<span class=\"c9Y6TC\"><span style=\"color: #0000ff;\">&lt;<\/span><\/span><span class=\"c49DIK\"><span style=\"color: #ac306d;\">xsl:template <\/span><\/span><span class=\"c18YC0\"><span style=\"color: #d00020;\">match=<\/span><\/span><span class=\"c5M9S0\"><span style=\"color: #000090;\">&#8220;Parameters&#8221;<\/span><\/span><span style=\"color: #0000ff;\"><span class=\"c9Y6TC\">&gt;<\/span><br \/><\/span> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"c9Y6TC\"><span style=\"color: #0000ff;\">&lt;<\/span><\/span><span class=\"c69ORU\"><span style=\"color: #aaaba0;\">!&#8211; TBD: more detail &#8212;<\/span><\/span><span style=\"color: #0000ff;\"><span class=\"c9Y6TC\">&gt;<\/span><br \/><\/span> &nbsp;&nbsp;&nbsp;&nbsp;<span class=\"c9Y6TC\"><span style=\"color: #0000ff;\">&lt;<\/span><\/span><span class=\"c49DIK\"><span style=\"color: #ac306d;\">\/xsl:template<\/span><\/span><span style=\"color: #0000ff;\"><span class=\"c9Y6TC\">&gt;<\/span><br \/><\/span> <br \/> &nbsp;&nbsp;&nbsp;&nbsp;<span class=\"c9Y6TC\"><span style=\"color: #0000ff;\">&lt;<\/span><\/span><span class=\"c49DIK\"><span style=\"color: #ac306d;\">xsl:template <\/span><\/span><span class=\"c18YC0\"><span style=\"color: #d00020;\">match=<\/span><\/span><span class=\"c5M9S0\"><span style=\"color: #000090;\">&#8220;Properties&#8221;<\/span><\/span><span style=\"color: #0000ff;\"><span class=\"c9Y6TC\">&gt;<\/span><br \/><\/span> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"c9Y6TC\"><span style=\"color: #0000ff;\">&lt;<\/span><\/span><span class=\"c69ORU\"><span style=\"color: #aaaba0;\">!&#8211; TBD: more detail &#8212;<\/span><\/span><span style=\"color: #0000ff;\"><span class=\"c9Y6TC\">&gt;<\/span><br \/><\/span> &nbsp;&nbsp;&nbsp;&nbsp;<span class=\"c9Y6TC\"><span style=\"color: #0000ff;\">&lt;<\/span><\/span><span class=\"c49DIK\"><span style=\"color: #ac306d;\">\/xsl:template<\/span><\/span><span style=\"color: #0000ff;\"><span class=\"c9Y6TC\">&gt;<\/span><br \/><\/span> &nbsp;&nbsp;&nbsp;&nbsp;<br \/> <span class=\"c9Y6TC\"><span style=\"color: #0000ff;\">&lt;<\/span><\/span><span class=\"c49DIK\"><span style=\"color: #ac306d;\">\/xsl:stylesheet<\/span><\/span><span class=\"c9Y6TC\"><span style=\"color: #0000ff;\">&gt;<\/span><\/span> &nbsp;<\/p>\n<p>As you see, I&#8217;m only handling content of Type 1 (folder), 2 (report), and 5 (datasource) &#8212; and I may even opt to eliminate Type 5 for the user-friendly version &#8212; but obviously if you want to handle all Types, including uploaded files, there is nothing more complicated to do.<\/p>\n<h2>Gussy it up if you want<\/h2>\n<p>A nice touch is a parameter to point to the Report Manager base&nbsp;url, so you can provide a link directly to each report <em>in situ<\/em>.<\/p>\n<p><img decoding=\"async\" style=\"margin-right: auto; margin-left: auto; padding: 20px; display: block; border: 1px solid silver;\" title=\"Sample xslt output\" src=\"\/lisa\/wp-non\/migrated\/2011\/5\/QnDRSDocs.png\" alt=\"Sample xslt output\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>If you choose to do this, however, remember that not all your users have access to all your reports, so (depending on your user base) you may have some people who can read this document but experience frustration when they click the links.<\/p>\n<h2>Making like Tina Turner<\/h2>\n<p><em>&#8220;We never, ever do anything nice and easy.&#8221;<\/em><\/p>\n<p>I did run into one irritating &#8220;infelicity&#8221; in SQL Management Studio while thinking this through, FWIW.&nbsp;<\/p>\n<p>It seems that Management Studio has exactly the same facility to test XSLT output of an XML file you&#8217;re editing as <a title=\"blog post about attaching XSLT to an XML document in the VS editor\" href=\"\/lisa\/2009\/02\/07\/YAPS-Random-acts-of-kindness-regarding-Reports-Excel-XSLT-and-you\/\">Visual Studio does<\/a>, so you&nbsp;should be able to&nbsp;perform the query above, open a Properties window, navigate to your XSLT, and immediately see the result.&nbsp; But <a title=\"MS Connect on this subject\" href=\"https:\/\/connect.microsoft.com\/SQLServer\/feedback\/details\/362793\/filenotfoundexception-when-you-try-to-show-xslt-output-in-ssms#tabs\" target=\"_blank\" rel=\"noopener\">it doesn&#8217;t work, probably never did work, and maybe never will work<\/a>.&nbsp;<\/p>\n<p>Oh well.&nbsp; If you have nothing else available, you can always&nbsp;<a title=\"Same blog post, more suggestions\" href=\"\/lisa\/2009\/02\/07\/YAPS-Random-acts-of-kindness-regarding-Reports-Excel-XSLT-and-you\/\">apply the xslt&nbsp;at the command line<\/a>.<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>The fully-loaded version of xmlRSDocs is invaluable in my work, because it allows me to ferret out every last technical detail about the RDLs on an SSRS Server.&nbsp; However, when I just want my users to have an idea of the reports available to them in Report Manager,&nbsp;running xmlRSDocs is&nbsp;overkill.&nbsp;&nbsp;I don&#8217;t need to do an&nbsp;SSIS<a class=\"more-link\" href=\"https:\/\/spacefold.com\/lisa\/2011\/05\/30\/yaps-on-ssrs-documentation-the-lite-version\/\">Read more<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5,6,10,11,12],"tags":[],"class_list":["post-62","post","type-post","status-publish","format-standard","hentry","category-reporting","category-sql-server","category-xml-xslt","category-xmlrsdocs","category-yaps"],"_links":{"self":[{"href":"https:\/\/spacefold.com\/lisa\/wp-json\/wp\/v2\/posts\/62","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/spacefold.com\/lisa\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/spacefold.com\/lisa\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/spacefold.com\/lisa\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/spacefold.com\/lisa\/wp-json\/wp\/v2\/comments?post=62"}],"version-history":[{"count":0,"href":"https:\/\/spacefold.com\/lisa\/wp-json\/wp\/v2\/posts\/62\/revisions"}],"wp:attachment":[{"href":"https:\/\/spacefold.com\/lisa\/wp-json\/wp\/v2\/media?parent=62"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/spacefold.com\/lisa\/wp-json\/wp\/v2\/categories?post=62"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/spacefold.com\/lisa\/wp-json\/wp\/v2\/tags?post=62"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}