PHP を使用している場合、1 つの解決策は次のとおりです。
catalog.xml
参照 URL に基づいて正しい XSL ファイルを提供する PHP ファイルを指定します。
このアイデアは、Ruby、ASP、JSP などの他のサーバーサイド スクリプトに移植できます。
カタログ.xml
ではcatalog.xml
、XSL ファイルではなく、PHP ファイルを指定します。この例では、PHP ファイルはcatalog.php
.
<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet type="text/xsl" href="catalog.php"?>
<catalog>
<cd>
<title>Empire Burlesque</title>
<artist>Bob Dylan</artist>
<country>USA</country>
<company>Columbia</company>
<price>10.90</price>
<year>1985</year>
</cd>
</catalog>
カタログ.php
catalog.php
参照 URL に基づいて正しい XSL ファイルを提供します。
<?php
// Output the correct Content-Type, so that browsers know
// to treat this file as an XSL document
header("Content-Type: text/xsl; charset=utf-8");
// Example $referer: http://example.com/catalog.xml?download-links-catalog.xsl
$referer = parse_url($_SERVER['HTTP_REFERER']);
// Example $query: download-links-catalog.xsl
$query = $referer['query'];
// If the file exists, serve up $query.
// If not, serve up the default presentation-list-catalog.xsl.
$xslFile = file_exists($query) ? $query : "presentation-list-catalog.xsl";
echo file_get_contents($xslFile);
?>
簡潔にするために、この例には一部のセキュリティ チェックが含まれていません。たとえば、それ$query
が実際に XSL ファイルであることを検証する必要があります。このチェックが行われないと、ハッカーがサーバー上の任意のファイルにアクセスする可能性があります。
プレゼンテーションリストカタログ.xsl
この XSL ファイルには何の変哲もありません。h2
タグ内のテキストはPresentation List Catalog
.
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<body>
<h2>Presentation List Catalog</h2>
<table border="1">
<tr bgcolor="#9acd32">
<th>Title</th>
<th>Artist</th>
</tr>
<xsl:for-each select="catalog/cd">
<tr>
<td><xsl:value-of select="title"/></td>
<td><xsl:value-of select="artist"/></td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
ダウンロード-リンク-catalog.xsl
この XSL ファイルは、タグpresentation-list-catalog.xsl
内のテキストが.h2
Download Links Catalog
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<body>
<h2>Download Links Catalog</h2>
<table border="1">
<tr bgcolor="#9acd32">
<th>Title</th>
<th>Artist</th>
</tr>
<xsl:for-each select="catalog/cd">
<tr>
<td><xsl:value-of select="title"/></td>
<td><xsl:value-of select="artist"/></td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
何を期待します
上記のセットアップを使用して、に移動すると、 を使用してhttp://example.com/catalog.xml
サービスが提供されます。catalog.xml
presentation-list-catalog.xsl
に移動すると、を使用してhttp://example.com/catalog.xml?download-links-catalog.xsl
サービスが提供されます。catalog.xml
download-links-catalog.xsl
上記の XML ファイルと XSL ファイルの例は、W3Schools の記事「XSLT - 変換」から引用したものです。