2012-04-17 14 views
7

मैं के रूप में एक एक्सएमएल फ़ाइल है से एक विशेषता मान का चयन:xslt - एक 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

यह आपको एक देना चाहिए:

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

... इस कमांड लाइन निम्नलिखित XSLT लागू किया जाता है सिंटैक्स त्रुटि जो आपको बताती है कि आप क्या गलत कर रहे हैं - यह एक सुंदर लंगड़ा एक्सएसएलटी प्रोसेसर है यदि यह आपकी त्रुटि को इंगित नहीं करता है। –

उत्तर

11

यह

BatchTable/UUThref/@Version 

नहीं

BatchTable/UUThref/[@Version] 

होना चाहिए ... तुम कहाँ से वर्ग कोष्ठक मिल रहा है?


मैं निम्नलिखित परीक्षण किया है, और यह निश्चित रूप से काम करता है:

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

@ आरकेके - क्या // // यूथफ्रफ़/@ संस्करण 'काम करता है? यदि ऐसा है, तो '/ UUThref/@ संस्करण' आज़माएं; यह संकुचित होगा जहां प्रासंगिक दस्तावेज़ रूट है। –

+0

रूपांतरण के लिए आप किस प्रोग्रामिंग भाषा का उपयोग कर रहे हैं? कुछ एक्सएसएलटी प्रोसेसर आपकी एक्सएमएल फाइल आदि में '' रखने के बारे में पसंद करेंगे, क्या आपको कोई त्रुटि संदेश मिलते हैं? – mellamokb