2012-04-17 27 views
7

から属性値を選択するよう:XSLT - 私は、XMLファイルを持っている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> 

私が持っているXSLファイル内のバージョンを選択するには:

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

これはしていません任意の値を返します。私は間違って何をしていますか?

+0

それはあなたを与える必要がありますあなたが間違っていることを正確に伝える構文エラー - あなたのエラーを指摘していない場合、それはかなり駄目なXSLTプロセッサです。 –

答えて

11

それはどこから角括弧を取得している...

BatchTable/UUThref/@Version 

ない

BatchTable/UUThref/[@Version] 

すべきですか?


私は次のことをテストしてみたし、それは間違いなく動作します:

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

を...このコマンドラインは、次の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

角かっこがなくても、バージョンの値は選択されません。 – rkk

+0

@rkk - '// UUThref/@ Version'は動作しますか?もしそうなら、 '/ UUThref/@ Version'を試してください。関連するドキュメントルートがどこにあるかを絞り込みます。 –

+0

変換にどのようなプログラミング言語を使用していますか? XSLTプロセッサーの中には、XMLファイルに ''があることが気になる人もいます。エラーメッセージが出ますか? – mellamokb

関連する問題