2011-08-16 118 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'。 –