DaniWeb IT Discussion Community

DaniWeb IT Discussion Community (http://www.daniweb.com/forums/index.php)
-   XML, XSLT and XPATH (http://www.daniweb.com/forums/forum134.html)
-   -   How to get exact xml file name (http://www.daniweb.com/forums/thread161581.html)

mlohokare Dec 10th, 2008 2:45 am
How to get exact xml file name
 
Hi,

************************************************
Below is my xml code

<?xml version="1.0" encoding="UTF-8"?>
<concept><title>TEST</title><body><title>CHECKING</title></body></concept>
************************************************
Below is my xslt code

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">

<xsl:template match="/">
        <xsl:for-each select="concept">
                <xsl:variable name="filename1"><xsl:value-of select="base-uri()" /></xsl:variable>
                <xsl:value-of select="$filename1" />
        </xsl:for-each>
</xsl:template>

</xsl:stylesheet>
************************************************
Getting output
D:\test\Checking.dita

Instead of this it should display only
"Checking"
************************************************

Scenario

1] I need file name to generate the HTML file.
2] Level of folder may vary. [File should be in any folder on drive.]

Please suggest.

Cheers,
Mahesh

mlohokare Dec 10th, 2008 8:43 am
Re: How to get exact xml file name
 
Hi Everybody,

I tried lot and finally get the solution for the same.

Which give the exact name of file.
Also it full fills the my condition
1] Level of folder may vary. [File should be in any folder on drive.]

please see modified code below...

<?xml version="1.0" encoding="UTF-8"?>

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">


<xsl:template match="/">
<xsl:text><![CDATA[
]]>
</xsl:text>
<test><xsl:text><![CDATA[
        ]]>
</xsl:text>
<xsl:for-each select="concept">
                <xsl:variable name="filename1"><xsl:value-of select="base-uri()" /></xsl:variable>
                <p><xsl:call-template name="name">
                                <xsl:with-param name="id"><xsl:value-of select="$filename1" /></xsl:with-param>
                        </xsl:call-template>
                </p>
        </xsl:for-each>
<xsl:text><![CDATA[
]]></xsl:text>
</test>
</xsl:template>

<xsl:template name="name">
        <xsl:param name="id" />
        <xsl:choose>
                <xsl:when test="$id[contains(.,'\')]">
                        <xsl:call-template name="name"><xsl:with-param name="id"><xsl:value-of select="substring-after($id, '\')" /></xsl:with-param></xsl:call-template>
                </xsl:when>
                <xsl:otherwise>
                        <xsl:value-of select="substring-before($id, '.')" />
                </xsl:otherwise>
        </xsl:choose>

</xsl:template>
</xsl:stylesheet>

If anyone has another idea on this please suggest.

Thanks.



Cheers,
Mahesh:)


All times are GMT -4. The time now is 1:30 pm.

Forum system based on vBulletin Copyright ©2000 - 2009, Jelsoft Enterprises Ltd.
©2003 - 2009 DaniWeb® LLC