2011-01-25 16 views
6

में मैं xml डेटा (वेब ​​सेवा से प्रतिक्रिया) के साथ एक स्ट्रिंग को बदलने की कोशिश कर रहा हूं।"prefix 'साबुन को परिभाषित नहीं किया गया है" xslt फ़ाइल

<?xml version="1.0" encoding="utf-8"?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl"> 
    <xsl:output method="html" indent="yes"/> 

    <xsl:template match="/"> 
     <table> 
     <tr> 
      <th>Name</th> 
     </tr> 
     <xsl:for-each select="soap:Envelope/soap:Body/ABRSearchByABNResponse/ABRPayloadSearchResults/response/legalName/"> 
      <tr> 
      <td> 
       <xsl:value-of select="givenName"/> 
      </td>  
      </tr> 
     </xsl:for-each> 

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

हालांकि, मैं "उपसर्ग 'साबुन' परिभाषित नहीं है" मिलता है, मैं इसे इस तरह ठीक है: मैं सिर्फ नाम हो रही द्वारा सरल शुरू करने की कोशिश? धन्यवाद।

+0

अच्छा सवाल, +1। स्पष्टीकरण और पूर्ण समाधान के लिए मेरा उत्तर देखें। –

उत्तर

5

एक्सएसएलटी में XPath अभिव्यक्ति में उपयोग किए गए किसी भी नामस्थान उपसर्ग को इसी नामस्थान घोषणा में परिभाषित किया जाना चाहिए।

यह आपके कोड और इसलिए त्रुटि के मामले में नहीं है।

समाधान:

साबुन नामस्थान घोषित:

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"  
xmlns:msxsl="urn:schemas-microsoft-com:xslt" 
xmlns:soap="http://soap/envelope/" 
> 
+0

@Alejandro: हाँ, मैं आज सुबह थोड़ा सा नींद आ रहा हूँ। :) –

+0

@Alejandro: फिक्स्ड। –

+0

+1 सही उत्तर। –

0

नामस्थान उपसर्ग, आपके मामले में soap, बस असली नाम स्थान यूआरआई के लिए आशुलिपि है। आपके पास http://soap/envelope/ हर जगह से बचने के लिए, आप soaphttp://soap/envelope/ के लिए खड़े होकर परिभाषित कर सकते हैं, और अपने शेष दस्तावेज़ में soap का उपयोग कर सकते हैं।

इसका मतलब है कि यदि आप नामस्थान उपसर्ग का उपयोग करते हैं, तो इसे परिभाषित किया जाना चाहिए ताकि असली नामस्थान पाया जा सके।

आप यह भी घोषित कर सकते हैं कि pizzahttp://soap/envelope/ से मेल खाता है और इसके बजाए इसका उपयोग करता है। soap नेमस्पेस उपसर्ग विशेष नहीं है।

+0

तो मुझे और फिर ? – peter

संबंधित मुद्दे