Xmls="http://www.sitemaps.org/schemas/sitemap/0.9" में शामिल होने पर XSLT काम नहीं करता है




xml-namespaces google-sitemap (2)

मेरा Google साइटमैप Xmlns = "http://www.sitemaps.org/schemas/sitemap/0.9" के बिना <urlset> तत्व के बिना एक्सएसएलटी जुर्माना के माध्यम से अच्छी तरह से रेंडर करता है, लेकिन जब इसमें शामिल होता है, तो मेरा वेशेल कथन कार्य नहीं करता है और कुछ भी नहीं प्रदान करता है टेम्पलेट में मेरा कोड नीचे है आपकी सहायता के लिए धन्यवाद.

एक्सएमएल

<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>{site_url}</loc>
<lastmod>{current_time format="%Y-%m-%d"}</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
</urlset>

XSL

<xsl:template match="/">
<html>
<body>
<h2>Sitemap</h2>
<table border="1">
<tr bgcolor="#9acd32">
  <th>Location</th>
  <th>Last Modified</th>
  <th>Update Frequency</th>
  <th>Priority</th>
</tr>
<xsl:for-each select="urlset/url">
<tr>
  <td><xsl:value-of select="loc"/></td>
  <td><xsl:value-of select="lastmod"/></td>
  <td><xsl:value-of select="changefreq"/></td>
  <td><xsl:value-of select="priority"/></td>
</tr>
</xsl:for-each>
</table>
</body>
</html>

https://code.i-harness.com


मेरा Google साइटमैप xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" बिना <urlset> तत्व के बिना XSLT ठीक के माध्यम से अच्छी तरह से रेंडर करता है, लेकिन जब इसमें शामिल किया जाता है, तो मेरा वेशेल कथन कार्य नहीं करता है और कुछ भी नहीं प्रदान करता है टेम्पलेट में

यह एक सामान्य प्रश्न है

XPath "कोई नाम स्थान" से संबंधित किसी भी अप्रयुक्त नाम से व्यवहार करता है हालांकि, प्रदान किए गए दस्तावेज़ में मौजूद तत्व "http://www.sitemaps.org/schemas/sitemap/0.9" नामस्थान - "no namespace"

इसलिए, निम्नलिखित XPath अभिव्यक्ति किसी भी नोड को बिल्कुल नहीं चुनती है:

urlset/url

समाधान :

XSLT स्टाइलशीट में "http://www.sitemaps.org/schemas/sitemap/0.9" नामस्थान को परिभाषित करें और उस पर एक उपसर्ग संबद्ध करें। फिर किसी भी XPath अभिव्यक्ति में भाग लेने वाले सभी नामों के साथ इस उपसर्ग का उपयोग करें

<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
 xmlns:s="http://www.sitemaps.org/schemas/sitemap/0.9"
 exclude-result-prefixes="s"
>

 <xsl:template match="/">
  <html>
    <body>
      <h2>Sitemap</h2>
      <table border="1">
        <tr bgcolor="#9acd32">
          <th>Location</th>
          <th>Last Modified</th>
          <th>Update Frequency</th>
          <th>Priority</th>
        </tr>
        <xsl:for-each select="s:urlset/s:url">
          <tr>
            <td><xsl:value-of select="s:loc"/></td>
            <td><xsl:value-of select="s:lastmod"/></td>
            <td><xsl:value-of select="s:changefreq"/></td>
            <td><xsl:value-of select="s:priority"/></td>
          </tr>
        </xsl:for-each>
      </table>
    </body>
  </html>
 </xsl:template>
</xsl:stylesheet>

जब यह परिवर्तन प्रदान किए गए XML दस्तावेज़ पर लागू होता है :

<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
    <url>
        <loc>{site_url}</loc>
        <lastmod>{current_time format="%Y-%m-%d"}</lastmod>
        <changefreq>monthly</changefreq>
        <priority>0.5</priority>
    </url>
</urlset>

यह सही ढंग से निम्न परिणाम पैदा करता है :

<html>
   <body>
      <h2>Sitemap</h2>
      <table border="1">
         <tr bgcolor="#9acd32">
            <th>Location</th>
            <th>Last Modified</th>
            <th>Update Frequency</th>
            <th>Priority</th>
         </tr>
         <tr>
            <td>{site_url}</td>
            <td>{current_time format="%Y-%m-%d"}</td>
            <td>monthly</td>
            <td>0.5</td>
         </tr>
      </table>
   </body>
</html>

एक्सपेथ को उपसर्ग के रूप में नाम स्थान की आवश्यकता होगी, जैसे

{http://www.sitemaps.org/schemas/sitemap/0.9}urlset

अगर यह xmlns था: x = "http://www.sitemaps.org/schemas/sitemap/0.9" आप उपयोग कर सकते हैं

x:urlset

ऐसा लगता है कि यह पेज http://msdn.microsoft.com/en-us/library/ms950779.aspx को मदद करेगा

संपादित करें: मैं इसे पोस्ट करने के लिए और उपसर्ग को परिभाषित करने के लिए एक्सएसएल का प्रयोग करने का एक उदाहरण के साथ पालन करना चाहता हूं, लेकिन डीमितर पहले से ही है।





google-sitemap