1

すべてのブログ エントリの抜粋のフィードである XML ドキュメントがあり、各エントリには、その特定のエントリの完全なコンテンツ (大きな画像、全文など) を保持する別の XML ファイルへのリンクがあります。これらの内部 XML ドキュメントにアクセスし、XPATH を使用してそこから値を取得することは可能ですか?

メインドキュメントは次のようになります。

    <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>
4

3 に答える 3

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];
}

} 
?> 

2 つの xpath と for each を使用して、このようなものはありますか?

于 2013-01-11T12:49:59.560 に答える
1

document() 関数を使用すると、属性の値を使用できます。

この小さな例は私にとってはうまくいきます:

xml 参照を含む Static.xml

<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="cartoon2html.xsl"?>
<xml xml="cartoons.xml"/>

実際の 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>

値を使用する XSL

<?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 を使用してこれを実行できます。

Firefox ブラウザーで static.xml ファイルを開くこともできます。

于 2013-01-11T12:55:00.770 に答える
1

機能はありdocumentますが、あなたが説明していることを正確に実行できるかどうかはわかりません

http://www.ibm.com/developerworks/library/x-tipcombxslt/

于 2013-01-11T09:53:38.677 に答える