我有一个XML文档,它是所有博客条目的摘录的源代码,并且在每个条目中都有一个指向另一个XML文件的链接,该文件包含该特定条目的完整内容(更大的图像,全文等) 。是否可以使用XPATH访问那些内部XML文档并从中获取值?
主要文件看起来像这样:
<Objects>
<Item xml="doc.xml"></Item>
// I would want to be able to access content
// inside the document at Item/@xml
<Item xml="doc2.xml"></Item>
</Objects>
答案 0 :(得分:1)
有一个document
函数,但我不知道你是否可以完全按照你的描述进行操作
答案 1 :(得分:1)
<?php
$feed = "http://example.com/feed.xml";
if (file_exists($feed)) {
$xml = simplexml_load_file($feed);
$Objects = $xml->xpath('//Objects/Item[@xml]');
foreach ($Objects as $O) {
$feed2 = "http://example.com/".$O."";
}
if (file_exists($feed2)) {
$xml = simplexml_load_file($feed2);
$feed2path = $xml->xpath('//*/*');
echo $feed2path[@someid];
}
}
?>
这样的东西使用两个xpaths和a for each?
答案 2 :(得分:1)
使用document()函数时,可以使用属性中的值。
这个小例子适合我:
<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="cartoon2html.xsl"?>
<xml xml="cartoons.xml"/>
<cartoons>
<cartoon name="Donald Duck" publisher="Walt Disney" />
<cartoon name="Mickey Mouse" publisher="Walt Disney" />
<cartoon name="Batman" publisher="DC Comics" />
<cartoon name="Superman" publisher="DC Comics" />
<cartoon name="Iron Man" publisher="Marvel Comics" />
<cartoon name="Spider-Man" publisher="Marvel Comics" />
</cartoons>
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:variable name="document" select="/xml/@xml" />
<xsl:variable name="cartoons" select="document($document)/cartoons" />
<xsl:template match="/">
<html>
<head>
<title>Cartoons</title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
</head>
<body>
<xsl:apply-templates select="$cartoons" />
</body>
</html>
</xsl:template>
<xsl:template match="cartoons">
<table>
<xsl:apply-templates />
</table>
</xsl:template>
<xsl:template match="cartoon">
<tr>
<td><xsl:value-of select="@name" /></td>
<td><xsl:value-of select="@publisher" /></td>
</tr>
</xsl:template>
</xsl:stylesheet>
您可以使用xsltproc运行此命令:#xsltproc cartoon2html.xsl static.xml
您也可以在firefox浏览器中打开static.xml文件。