【问题标题】:Why can't I include PHP in XML file?为什么我不能在 XML 文件中包含 PHP?
【发布时间】:2014-01-30 14:47:22
【问题描述】:

我有以下 XML 站点地图结构:

<?xml version="1.0" encoding="UTF-8"?>

    <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">

        <url><loc>http://www.example.com/</loc></url> 

    </urlset>

如何包含具有以下内容的“&lt;?php include ("assets/includes/menu.inc"); ?&gt;”:

<li><a href="index.php">Home</a></li>
<li class="subMenu"><a href="gallery.php">Gallery</a>
    <ul>
        <li><a href="page1.php">Page</a></li>
        <li><a href="page2.php">Page2t</a></li>
    </ul>
</li>
<li><a href="contact.php">Contact</a></li>

我要做什么?我正在尝试使我的站点地图自动生成/更新,因此我想将我的菜单“主链接”包含到 XML,然后使用 CSS“在选择器之前和之后”在每个 &lt;a&gt;&lt;/a&gt;&lt;/url&gt;&lt;/loc&gt; 之后添加标签 &lt;url&gt;&lt;loc&gt;,创建:&lt;url&gt;&lt;loc&gt;http://www.example.com/&lt;/loc&gt;&lt;/url&gt;,这就是站点地图的基本构建。

关于如何完成这项工作的任何想法?

【问题讨论】:

  • 你不能用 CSS 做到这一点。读取站点地图的工具不会关心您尝试对其应用什么 CSS,它们只是读取原始 XML。您必须让 PHP 生成站点地图所需的所有 XML。
  • 为什么?因为默认情况下,您不能在其他任何内容中包含某些内容,除非其他任何内容明确为您提供了这样做的方法(在这种情况下它没有)。您必须使用 PHP 代码生成 XML,在这种情况下您可以做任何事情。尽管我完全不知道 CSS 是如何出现的。即使这样做了,你也不能用它插入标签。
  • 我只是想将我的菜单链接包含到站点地图文件中,以使其自动生成,如果我可以使用 .php 来做到这一点,我需要 .xml 吗?正如我听说谷歌需要 xml 的站点地图

标签: php html xml apache


【解决方案1】:

服务器读取 .xml .html .css 文件作为带有标记的简单文本,为了使用 php 你需要有一个 .php (使用默认设置,如果你可以修改 apache 以将每个文件读取为 php想要 - 但这没有任何意义)并且有人说,如果你想要任何暗示 php 的东西,你需要制作一个 php 文件来生成你需要的文件,而不是相反。

文件具有 .php 扩展名这一事实告诉服务器他必须将该文件解析为 php,因此解析器启动并仅运行介于两者之间的数据,而其他所有内容都保持不变。

【讨论】:

    【解决方案2】:

    您必须在 PHP 中包含 XML,而不是相反。

    您的 PHP 文件必须具有 XML 标头内容类型:

    header ("Content-Type:text/xml");
    

    然后你像这样在你的 php 文件中显示 xml:

    echo '<?xml version="1.0" encoding="UTF-8"?>
    
        <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
    
            <url><loc>http://www.example.com/</loc></url> 
    
        </urlset>';
    

    请记住,您不能简单地在站点地图中包含 html。您必须使用特定标记格式化您的链接,这可以被机器人理解。

    您的站点地图网址将类似于http://www.mysite.com/sitemap.php 如果站点地图的扩展对你来说真的很重要,你可以得到一个带有 url 重写的 .xml。 您还可以在 robots.txt 中指定站点地图的 url。

    Sitemap: http://www.example.com/sitemap.php
    

    在此站点上查看更多示例: http://www.sitemaps.org/protocol.html#submit_robots

    我不太确定您尝试使用 CSS 实现什么目标,因为站点地图是要显示的,但通常 xml 使用 XSL 设置样式

    【讨论】:

    • 这会将 HTML 也视为 XML,不是吗?根据浏览器的不同,它甚至不会尝试呈现任何 HTML。
    • 那又怎样?您的 sitemap.xml 不适用于浏览器……
    • 是的,但 sitemap.xml 不用于显示。
    • 嗯,你的意思是我将我的站点地图创建为 .php,然后使用 Apache 将其读取为 .xml?
    • 正如我在回答中所写的那样,您不能在 xml 中包含 html。您必须将您的 html 菜单转换为 xml。这可以通过 php 中的 regexp 或 dom 操作来完成,但不能使用 css
    猜你喜欢
    • 1970-01-01
    • 2010-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-30
    • 2010-11-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多