Xslt - select attribute value from xml file

I have an XML file:

<BatchTable> <UUThref SocketIndex='0 - CCM' UUTResult='Passed' URL='C:\OverrideCallbacks_BatchReport[4 16 2012][4 14 18 PM].xml' FileName='OverrideCallbacks_BatchReport[4 16 2012][4 14 18 PM].xml' ECAFailCount='1' Version='StationPartNumber=55555StationSerialNumber=2222TPSPartNumber=1234'/> </BatchTable> 

To select the version in the xsl file, I:

 <xsl:value-of select="BatchTable/UUThref/[@Version]"/> 

This does not return any value. What am I doing wrong?

+7
source share
1 answer

It should be

 BatchTable/UUThref/@Version 

not

 BatchTable/UUThref/[@Version] 

... where do you get the square brackets from?


I tested the following and it definitely works:

 xmlstarlet sel -t -m 'BatchTable/UUThref/@Version' -v . <test.xml 

... this command line works by applying the following XSLT:

 <?xml version="1.0"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:exslt="http://exslt.org/common" version="1.0" extension-element-prefixes="exslt"> <xsl:output omit-xml-declaration="yes" indent="no"/> <xsl:template match="/"> <xsl:for-each select="BatchTable/UUThref/@Version"> <xsl:call-template name="value-of-template"> <xsl:with-param name="select" select="."/> </xsl:call-template> </xsl:for-each> </xsl:template> <xsl:template name="value-of-template"> <xsl:param name="select"/> <xsl:value-of select="$select"/> <xsl:for-each select="exslt:node-set($select)[position()&gt;1]"> <xsl:value-of select="'&#10;'"/> <xsl:value-of select="."/> </xsl:for-each> </xsl:template> </xsl:stylesheet> 
+11
source

All Articles