From Friday, April 19th (11:00 PM CDT) through Saturday, April 20th (2:00 PM CDT), 2024, ni.com will undergo system upgrades that may result in temporary service interruption.

We appreciate your patience as we improve our online experience.

NI TestStand

cancel
Showing results for 
Search instead for 
Did you mean: 

Custom stylesheet, how to retrieve parts of seq file path

Solved!
Go to solution

We are building a custom stylesheet for our specific needs that is based on the TR5_Horizontal stylesheet. The location that our sequence files are stored in have particular meaning (ex. part, rev, etc.) and I would like to extract those items to be displayed on the test report instead of the complete path to the sequence file.

 

I'm not really versed in XPath / XSLT so I've not gotten to far. I have tried some function that should help (like tokenize) however, it seems that I am limited to XSL 1.0.

 

I have found that I can get the path from the name attribute here: 

<xsl:when test="contains(@name,'#')">
<span style="margin-left:20px;font-size:70%;font-weight:bold;">
(<xsl:value-of select="substring-before(@name, '#')"/>)

If I want to split the path (ex. C:\..\..\..\part\rev\<testname>.seq) into the desired parts, how would I do this? 

0 Kudos
Message 1 of 2
(137 Views)
Solution
Accepted by topic author pstestek

I was able to resolve my issue with the help of someone outside of this forum. The solution was to create a named template to parse the file path string:

 

 <xsl:template name="parse-path">

   <xsl:param name="text"/>

   <xsl:variable name="n" select="string-length(translate($text, translate($text, '\', ''), ''))"/>

   <xsl:if test="$n=2">

       <part>

        Part: 

           <i><xsl:value-of select="substring-before($text, '\')"/>|</i>

       </part>

   </xsl:if>

   <xsl:if test="$n=1">

       <rev>

        Rev: 

           <i><xsl:value-of select="substring-before($text, '\')"/>|</i>

       </rev>

   </xsl:if>

   <xsl:if test="$n=0">

       <testname>

        TestName: 

           <i><xsl:value-of select="substring-before($text, '.')"/></i>

       </testname>

   </xsl:if>

   

   <xsl:if test="$n">

       <!-- recursive call -->

       <xsl:call-template name="parse-path">

           <xsl:with-param name="text" select="substring-after($text, '\')"/>

       </xsl:call-template>

   </xsl:if>

</xsl:template>

 

Message 2 of 2
(93 Views)