2011-08-16 268 views
0

解析與錯誤的PHP XLST處理器結果如下:XSL和命名空間

`Warning: DOMDocument::load(): Namespace prefix g on id is not defined in /var/www /mistermatic/spider/resources/xslt/car/google.xsl, line: 32 in /var/www/mistermatic/ads/PublicXML/makeXML.php on line 91` 

如何正確定義RSS節點內部的命名空間,這樣我可以把它應用到所有我的孩子要操縱?

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> 
    <xsl:strip-space elements="*"/> 
    <xsl:output method="xml" version="1.0" encoding="UTF-8" omit-xml-declaration="no" indent="yes"/> 

    <xsl:template match="/"> 
     <rss xmlns:g="http://base.google.com/ns/1.0" version="2.0"> 
      <channel> 
     <title>Mistermatic</title> 
     <link>http://www.mistermatic.it</link> 
     <description>Multipubblicazione di annunci di automobili nuove ed usate</description> 

       <xsl:for-each select="//ad"> 
        <item xmlns:g="http://base.google.com/ns/1.0" version="2.0"> 
         <xsl:apply-templates select="itemId"/> 
         <g:availability>in stock</g:availability> 
         <g:google_product_category><![CDATA[Veicoli a motore > Veicoli > Auto, autocarri e furgoni]]></g:google_product_category> 
        </item> 
       </xsl:for-each> 
      </channel> 
     </rss> 
    </xsl:template> 

    <xsl:template match="itemId"> 
     <g:id> 
      <xsl:text disable-output-escaping="yes">&lt;![CDATA[</xsl:text> 
      <xsl:value-of select="@value"/> 
      <xsl:text disable-output-escaping="yes">]]&gt;</xsl:text> 
     </g:id> 
    </xsl:template> 

</xsl:stylesheet> 

回答

1

移動xmlns:g申報到xsl:stylesheet元素,使得整個樣式表可見。

0

問題是,您正在定義rss元素中的名稱空間,但是,它在XSLT文件的其他地方使用。嘗試將名稱空間定義移動到XSLT文檔的根目錄。

+0

好的,在根中移動xlmns聲明,如下所示:''我得到這個由PHP:警告:XSLTProcessor :: importStylesheet():xsl:版本:只有1.0功能支持等等等!我能做些什麼來定義在2.0版本的谷歌xmlns和保持版本1.0 xlsl xmlns? –

+1

在rss元素上留下'version =「2.0」',只移動'xmnls:g'。 –