2012-04-17 52 views
7

Tengo un archivo XML como:XSLT - seleccionar un valor de atributo de un archivo XML

<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> 

Con el fin de elegir la versión en el archivo XSL que tengo:

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

Esto no lo hace devolver cualquier valor ¿Qué estoy haciendo mal?

+0

Se le debe dar una error de sintaxis que le dice exactamente lo que está haciendo mal - es un procesador XSLT bastante cojo si no apunta a su error. –

Respuesta

11

Debe ser

BatchTable/UUThref/@Version 

no

BatchTable/UUThref/[@Version] 

... donde está usted recibiendo los corchetes?


He probado lo siguiente y definitivamente las obras:

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

... esta línea de comandos funciona aplicando la siguiente 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> 
+0

Incluso sin corchete cuadrado, no selecciona el valor de la Versión. – rkk

+0

@rkk - ¿Funciona '// UUThref/@ Version'? Si es así, prueba '/ UUThref/@ Version'; esto se reducirá donde está la raíz del documento relevante. –

+0

¿Qué lenguaje de programación está utilizando para la conversión? Algunos procesadores XSLT serán quisquillosos con tener '' en su archivo XML, etc. ¿Obtiene algún mensaje de error? – mellamokb

Cuestiones relacionadas