2012-01-23 21 views
6

के लिए एक्सएसएल बनाना एक आरएसएस फ़ीड प्रस्तुत करने के लिए मैं एक छोटी सी कस्टम एक्सएसएल फ़ाइल बना रहा हूं। निम्नानुसार सामग्री मूलभूत हैं। यह निष्पक्ष रूप से काम करता है जब स्रोत एक्सएमएल में फीड परिभाषा में 'xmlns = "http://www.w3.org/2005/Atom" पंक्ति होती है। मैं इसे कैसे संबोधित करूं? मैं इस मामले को कैसे खाता है, यह जानने के लिए नामस्थानों के साथ पर्याप्त परिचित नहीं हूं।एटम फ़ीड

<?xml version="1.0" encoding="ISO-8859-1"?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" > 
<xsl:template match="/" > 
<html xsl:version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml"> 
    <body style="font-family:Arial;font-size:12pt;background-color:#EEEEEE"> 
    <xsl:for-each select="feed/entry"> 
     <div style="background-color:teal;color:white;padding:4px"> 
     <span style="font-weight:bold"><xsl:value-of select="title"/></span> - <xsl:value-of select="author"/> 
     </div> 
     <div style="margin-left:20px;margin-bottom:1em;font-size:10pt"> 
     <b><xsl:value-of select="published" /> </b> 
     <xsl:value-of select="summary" disable-output-escaping="yes" /> 
     </div> 
    </xsl:for-each> 
    </body> 
</html> 
</xsl:template> 
</xsl:stylesheet> 

उत्तर

8

आप XSLT में नाम स्थान घोषणा शब्दों में कहें, इस तरह:

<xsl:stylesheet 
    version="1.0" 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns:atom="http://www.w3.org/2005/Atom" 
    exclude-result-prefixes="atom" 
> 
    <xsl:template match="/"> 
    <html xmlns="http://www.w3.org/1999/xhtml"> 
     <body style="font-family:Arial;font-size:12pt;background-color:#EEEEEE"> 
     <xsl:apply-tepmplates select="atom:feed/atom:entry" /> 
     </body> 
    </html> 
    </xsl:template> 

    <xsl:template match="atom:entry"> 
    <div style="background-color:teal;color:white;padding:4px"> 
     <span style="font-weight:bold"> 
     <xsl:value-of select="atom:title"/> 
     </span> 
     <xsl:text> - </xsl:text> 
     <xsl:value-of select="atom:author"/> 
    </div> 
    <div style="margin-left:20px;margin-bottom:1em;font-size:10pt"> 
     <b><xsl:value-of select="atom:published" /> </b> 
     <xsl:value-of select="atom:summary" disable-output-escaping="yes" /> 
    </div> 
    </xsl:template> 
</xsl:stylesheet> 

ध्यान दें कि एटम नामस्थान उपसर्ग atom: साथ पंजीकृत है और स्टाइलशीट भर में सभी XPath में प्रयोग किया जाता है। atom: परिणामस्वरूप दस्तावेज़ में दिखाई नहीं देगा यह सुनिश्चित करने के लिए मैंने exclude-result-prefixes का उपयोग किया है।

यह भी ध्यान दें कि मैंने आपके <xsl:for-each> को टेम्पलेट के साथ बदल दिया है। आपको टेम्पलेट के पक्ष में प्रत्येक के लिए भी बचने की कोशिश करनी चाहिए।

disable-output-escaping="yes" का उपयोग एक्सएचटीएमएल के साथ कुछ हद तक खतरनाक है - जब तक कि आप बिल्कुल सकारात्मक नहीं हैं कि summary की सामग्री अच्छी तरह से बनाई गई एक्सएचटीएमएल है।

+0

मुझे यकीन है कि एक्सएचटीएमएल सुरक्षित है - यह एक आंतरिक स्रोत से है। सहायता के लिए धन्यवाद। –

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